我一直在閱讀關於TDD的內容,並希望將其用於我的下一個項目,但我不確定如何使用這種新範例構建我的類。我想使用的語言是Java,但問題並不是特定於語言的。設備通信器的TDD
項目
我有硬件的幾件拿出一個ASCII-過RS232接口。我可以發出簡單的命令,並獲得簡單的響應,並像從前面板一樣控制它們。每個人都有一個稍微不同的語法和非常不同的命令集。我的目標是創建抽象/接口,以便我可以通過GUI和/或遠程過程調用來控制它們。
的問題
我認爲第一步是創建一個抽象類(我壞名,怎麼樣「通訊」?)來實現所有喜歡串行I/O的東西,然後爲每個設備創建一個子類。我相信它會比這更復雜一些,但這是我腦海中應用程序的核心。
現在,對於單元測試,我不認爲我真的需要實際的硬件或串行連接。我想要做的是將我的Communicators作爲一個InputStream和OutputStream(或Reader和Writer),它可以來自串口,文件,stdin/stdout,從測試函數傳送,不管。那麼,我是否只需將Communicator構造函數作爲輸入?如果是這樣,將責任全部放在測試框架上很容易,但對於真正的人來說,誰來建立真正的連接呢?一個單獨的構造函數?函數再次調用構造函數?一個單獨的課程是將Communicator「連接」到正確的I/O流的工作?
編輯
我正要改寫問題部分爲了得到答案,我想我是問這個問題,但我想我想通了。我(正確地?)確定了兩個不同的功能區域。
1)與所述設備(理解其輸出&生成命令)
幾個月前通信的串行端口
2)處理,我會它全部合併成一個類。我第一個想擺脫這種情況的想法是將IO流傳遞給理解設備的類,我無法弄清楚誰將負責創建流。
已經做了更多的控制反轉研究,我想我有和答案。有一個單獨的接口和類來解決問題#1並將其傳遞給解決問題#2的類(es?)的構造函數。這樣,分開測試都很容易。 #1連接到實際的硬件,並允許測試框架做不同的事情。 #2可以通過給予#1的模擬來測試。
這聽起來合理嗎?我需要分享更多信息嗎?
您將使用什麼操作系統來構建和運行測試?這在生產中是否會一樣? – 2009-03-04 06:34:14