我有一個應用程序繪製圖表。該圖遵循一定的模式,TDD與圖表
對於如形狀X雲形狀Y,形狀{X,Y}屬於羣P中......
下圖可以得到大而複雜(想想一個電路圖)。
什麼是爲這個應用程序編寫單元測試的好方法?
我有一個應用程序繪製圖表。該圖遵循一定的模式,TDD與圖表
對於如形狀X雲形狀Y,形狀{X,Y}屬於羣P中......
下圖可以得到大而複雜(想想一個電路圖)。
什麼是爲這個應用程序編寫單元測試的好方法?
如果你沒有任何非視覺的複雜性,你是不是寫一個程序,你是生產一件藝術品。除非你使用了一個可怕的錯誤編譯器或者什麼東西,否則我會避免任何測試,歸結爲'測試源代碼做它所做的事情'。任何功能相當的測試:
assertEquals (hash(stripComments(loadSourceCode())), 0x87364fg3234);
可以被刪除而不會丟失。
您已經描述了數據模型。應用程序可能會做某些事情,而不是坐在那裏,在內存中存儲一些數據。編寫測試應用程序的行爲並驗證結果是預期的。
除非您真正瞭解將要構建的API調用的確切順序,否則很難爲這樣的視覺類型編寫定義的單元測試。
要測試像這樣的「視覺」,你有三個部分。
A「秒殺」得到適當的外觀,縮放,顏色和所有。在某些情況下,這幾乎是整個應用程序。
對其進行的「手動」測試會創建一些最終圖像,以確保其看起來正確。除了實際查看實際輸出之外,沒有簡單的方法來測試它。這很難自動化。
模擬圖形組件以確保您的應用程序正確調用圖形組件。
當您進行更改時,您必須運行兩個測試:API調用是否全部正確?以及那個API調用序列是否產生看起來正確的圖像?
你可以 - 如果你想真正爆發一個腦細胞 - 嘗試從你的圖形創建一個PNG文件,並測試,看看PNG文件「看起來」是否正確。這是不值得的努力。
隨着您的前進,您的要求可能會發生變化。在這種情況下,您可能必須先重寫秒殺,並讓事情看起來正確。然後,您可以抽出一系列API調用來創建自動化單元測試。
有人可能會認爲創建尖峯違反了TDD。但是,尖峯設計用於創建可測試的圖形模塊。你不能輕易地寫測試用例,因爲測試過程是「向人展示」。它不能自動化。
您可能會考慮首先將初始輸入數據轉換爲某種可以測試的中間格式。然後,您將該中間格式轉發到您必須手動測試的實際繪圖功能。
例如,如果您有一個輸入百分比並輸出餅圖的程序,那麼您可能有一箇中間格式,它準確描述了每個扇區的尺寸和位置。
你是什麼意思秒殺? – geejay 2009-09-17 19:24:54
Spike解決方案:http://www.extremeprogramming.org/rules/spike.html – 2009-09-17 20:06:05