2008-12-31 34 views
0

我是使用nunit進行單元測試的新手(通常是Java開發)。在爲類上的私有方法創建單元測試時,它看起來好像測試文件必須與被測試的類位於同一個包中。避免導出單元測試的API的典型方法是什麼?我可以使包/保護的類/測試方法?還是開發人員通常有一個單獨的版本發佈排除單元測試文件?創建nunit測試,而不用api輸出它們

回答

0

測試文件不一定必須與被測試的類位於同一個包中。事實上,將測試文件放在一個完全獨立的軟件包中是一種很好的做法,可以讓他們測試公共API而不必關心軟件包級別的實現細節。

或者,您可以將構建腳本(例如Nant)設置爲在構建發行版可執行文件時忽略包含「測試」的文件。

1

我可以告訴IntelliJ或Ant不要在部署中打包JUnit測試。我在源代碼的一個單獨的目錄中進行了測試,這是可能的。

不要將源代碼和測試類混合在一起。保持它們分開,以便使用於部署的工具/腳本變得更加簡單。

0

就我個人而言,我的方法只是測試公開的功能,所以你最終只能測試封裝良好的部件。

這通常會導致我的設計包含具有定義好的功能的小類,這些功能更易於測試。

一般來說,當單元測試你不應該關心你測試內部的東西時,所以我覺得這是處理它的最好方法。

我也同意最好是單獨測試和生產代碼。

0

保持測試源代碼不在應用程序源代碼中。一般來說,只測試公開的功能。如果您確實需要測試私人行爲,請創建一個測試對象來擴展實際對象,並允許publec訪問私人行爲。

0

我認爲將您的測試代碼移出CUT(待測試類)包是錯誤的。在某些情況下,您可能想要測試受保護的方法或類,並將測試代碼放在另一個包中,這樣做會很難或不可能。

更好的解決方案是爲您的測試代碼創建一個單獨的目錄,該代碼僅反映生產代碼的包裝結構。這是我做的:

src/main/java/com/example/Foo.java 
src/test/java/com/example/FooTest.java 

然後生成腳本可以很簡單地忽略src/test/**當談到時間爲打包和部署。

相關問題