2010-02-02 61 views
5

我一直在開發一個內部框架,它是用一堆Perl模塊設計的。所有這些模塊都依賴於暴露一些Win32功能的單個模塊。對於例如A,B,C,D等模塊都依賴於單個模塊Z.因此,所有這些模塊都將通過「使用MyFramework :: Z」導入。所有這些模塊A,B,C等都可以單獨使用,不依賴於任何其他框架模塊。如何爲同一分佈中的多個Perl模塊設計單元測試?

現在,考慮到這個簡單的設計 - 我如何設計我的單元測試。我打算使用Test :: More來完成所有的單元測試。我應該爲每個模塊編寫單獨的單元測試嗎?有25個不同的模塊屬於這個框架。有什麼建議麼?

+0

感謝您的所有建議。 – John 2010-02-02 23:38:42

回答

6

單元測試Z應該覆蓋Win32功能。

單元測試A應涵蓋Z中未涵蓋的功能A。 重複執行B,C,D等。

如果發現CEG都在做類似的事情和你正在編寫幾乎相同的單元測試,這是信號重構 - 提取通用組件到一個更高的水平(例如,模塊CEG)和只需在其原始模塊中留下並測試C,EG的特殊部分即可。

1

有幾件事情可以做:

  1. 開始寫他們! ;)
  2. 每個模塊測試一次(如您所建議的)並嘗試僅測試您正在測試的代碼。 (聽起來很明顯,但它很容易開始考慮與其他模塊交互)上CPAN
  3. 退房模塊測試的例子
  4. 閱讀BDDTDD
2

在一般情況下,我會與實施啓動測試低級功能,併爲設計爲在單獨文件中彼此獨立的模塊保留測試。

如果您認爲重要的是能夠獨立於Win32環境測試代碼,請創建一些模擬特定於Win32特定模塊的接口的模塊代碼(專用於測試)。一個package聲明以及一些精簡的函數可以很好地實現這個技巧,具體取決於真實模塊的實際功能。

相關問題