2013-02-14 55 views
3

我創建了一個標準文件夾strucure的Maven項目,例如src/main/java,src/test/java等。如何從Maven的主文件夾訪問測試類?

我寫了一個ClassA類和一個測試類TestA。

從ClassA的主程序中,我指的是TestA的靜態成員。代碼編譯,但是當我運行它時,我得到:NoClassDefFoundError:TestA。

如何從ClassA內部訪問TestA?

+2

這看起來像是一個值得懷疑的設計決定。爲什麼你的主應用程序依賴於一個測試類? – kostja 2013-02-14 11:05:15

+1

Btw。您遇到的問題是故意的 - 因此maven將測試與應用程序分開。 – kostja 2013-02-14 11:06:30

+0

我從ClassA.main訪問TestA。這是一種方便 - 在開發ClassA時,它允許我輕鬆運行一些運行ClassA.main的測試。 – 2013-02-14 11:07:28

回答

4

與其直接解決您的問題,我會建議重新考慮您的測試設計。 Maven是完全有能力對自己的運行測試,只需在命令行中輸入

mvn test

。如果你想運行一個測試類,進入

mvn test -Dtest=MyTest

爲一個單一的測試方法,使用

mvn test -Dtest=MyTest#shouldRunPerfectly

它還支持通配符,所以運行一些常用的測試,你可以類型

mvn test -Dtest=Integration*#shouldBeFaster*

大多數IDE允許直接通過快捷方式運行測試。如果我沒有記錯,這是 + Alt鍵+X然後牛逼 Eclipse和 + 按Ctrl + F10 的IntelliJ。的IntelliJ還採用了按Ctrl ++Ť快捷鍵導航到你正在使用的類的測試。

Maven目錄結構強調測試與應用程序的分離,並且使您很難執行您計劃的任務。

tl; dr - 做它的maven方式