2014-10-20 56 views
2

假設我有一個所謂的傳統類A。然後我寫ATest,這樣我就可以安全地重構A。然後我提取很多類,例如,A調用BB調用C,C調用DATest仍涵蓋AB,CD。現在ATest幾乎是一個集成測試,因爲它涵蓋了多於一個或兩個類(儘管與最初相同的功能)。現在您能否給我建議(或者提供一些參考資料)我是否應該投入大量時間將ATest分成BTest,CTest,DTest。如果是這樣,我應該立即執行嗎?如果我有新的功能添加到D,我應該創建DTest而不觸及ATest(選項1),添加測試方法ATest(選項2)或ATest移動測試DTest,並添加新的測試方法有(3)?在生產代碼中提取類後應該創建新的測試類嗎?

+0

而那些類'B','C','D'確實有公開的方法,因爲對於我來說這似乎很普遍,因爲一個類至少有一個公共方法。 – 2014-10-20 21:45:50

+0

http://stackoverflow.com/questions/3402177/extracting-class-when-tdding-how-to-test-the-new-extracted-class?rq=1可能的重複 – guillaume31 2014-10-22 09:23:52

回答

2

首先,確保ATest是一個純粹的集成測試 - 也就是說,它不只是跨多個類的單元測試的負載..我的意思是ATest不關心如何做什麼,只是最終的結果是正確。即它不關心你如何建造汽車,只是建造一輛汽車。這個很重要。

理想情況下,你應該然後指定寫入每個類的,這樣的BTEST,CTEST,DTEST之前:

一)你明確地定義每個類

B)的作用,你確信各部分是在移動到下一個

c)您允許容易未來問題隔離(即隔離發生故障的組件之前正確 - B,C或d從它們各自的失敗測試)

你到底應該有個傳球針對每個班級的單元測試和該過程的集成測試。

添加功能:編寫單元測試,然後寫入類。然後,如果它影響過程的核心結果(如最終產品不是汽車,而是自行車!),則添加集成測試,否則不應要求集成測試。

相關問題