假設我有一個所謂的傳統類A
。然後我寫ATest
,這樣我就可以安全地重構A
。然後我提取很多類,例如,A
調用B
,B
調用C
,C
調用D
。 ATest
仍涵蓋A
,B
,C
和D
。現在ATest
幾乎是一個集成測試,因爲它涵蓋了多於一個或兩個類(儘管與最初相同的功能)。現在您能否給我建議(或者提供一些參考資料)我是否應該投入大量時間將ATest
分成BTest
,CTest
,DTest
。如果是這樣,我應該立即執行嗎?如果我有新的功能添加到D
,我應該創建DTest
而不觸及ATest
(選項1),添加測試方法ATest
(選項2)或ATest
移動測試DTest
,並添加新的測試方法有(3)?在生產代碼中提取類後應該創建新的測試類嗎?
2
A
回答
2
首先,確保ATest是一個純粹的集成測試 - 也就是說,它不只是跨多個類的單元測試的負載..我的意思是ATest不關心如何做什麼,只是最終的結果是正確。即它不關心你如何建造汽車,只是建造一輛汽車。這個很重要。
理想情況下,你應該然後指定寫入每個類的,這樣的BTEST,CTEST,DTEST之前:
一)你明確地定義每個類
B)的作用,你確信各部分是在移動到下一個
c)您允許容易未來問題隔離(即隔離發生故障的組件之前正確 - B,C或d從它們各自的失敗測試)
你到底應該有個傳球針對每個班級的單元測試和該過程的集成測試。
添加功能:編寫單元測試,然後寫入類。然後,如果它影響過程的核心結果(如最終產品不是汽車,而是自行車!),則添加集成測試,否則不應要求集成測試。
相關問題
- 1. 我應該創建一個用於創建代碼的GUI的新類嗎?
- 2. 我應該在Redis的Rails中創建一個新類嗎?
- 3. 我應該在生產代碼中使用Google的JSAPI嗎?
- 4. 我應該創建子類NSManagedObject嗎?
- 5. 單位測試代碼的產生
- 6. 我們應該創建包含附加模擬的基礎測試類嗎?
- 7. 在代碼中創建測試數據
- 8. 我應該在測試文件中創建助手方法嗎?
- 9. 如何使用.Net IO類創建可測試的代碼?
- 10. PHP:我應該把所有的代碼寫在類中嗎?
- 11. 如何測試在應該被模擬的__init__中創建對象的python類?
- 12. 在IntelliJ中創建測試類
- 13. Ocunit - 創建單獨測試類以在類之間共享代碼
- 14. 編碼的UI測試生成器記錄類似的類,在UIMap中創建大量的類
- 15. 應該在iPhone中使用NIB或代碼創建視圖嗎?
- 16. 在測試類中創建新的多維數組
- 17. 代碼生成工具,爲單元測試創建C#適配器類?
- 18. 你對非生產代碼進行單元測試嗎?
- 19. 當我將代碼提取到依賴關係時,我應該重新組織我的測試嗎?
- 20. 在Flask-SQLAlchemy中,我應該使用create_all()在生產環境中創建表嗎?
- 21. 創建Wrapper類時,我應該在.NET中使用API的內部類嗎?
- 22. 在代碼隱藏中創建css類
- 23. 獲取微軟測試框架使用Spring.Net創建測試類
- 24. 從java類中刪除測試代碼
- 25. 單元測試中的bug比生產代碼中的更多
- 26. c#代理類用於測試和生產Web服務
- 27. 可以在Linq-to-Objects中創建新的類型類嗎?
- 28. 如何將測試代碼與生產代碼一起重構?
- 29. 我應該在ActionFilter中測試AdalException嗎?
- 30. 爲什麼派生類中的測試重新運行父類測試?
而那些類'B','C','D'確實有公開的方法,因爲對於我來說這似乎很普遍,因爲一個類至少有一個公共方法。 – 2014-10-20 21:45:50
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