2013-03-26 98 views
2

我正在使用Maven編寫的項目。Maven單元測試

如果我做

mvn clean install 

話,我希望它能運行在/test forder的所有單元測試。

我將構建過程重定向並存儲到輸出文件中,並嘗試通過名稱找出單元測試。但是,我無法找到一些單元測試。似乎有些單元測試實際上並沒有在構建過程中執行。

我的問題是如何知道將在構建過程中執行的單元測試的選擇。

+3

也許你已經知道這件事了,它與你的問題沒有任何關係,但默認情況下,mvn只運行名稱以「Test」(如TestBogosort或PrimeFinderTest)開頭或結尾的類的單元測試(在任何包src/test/java文件夾) – dspyz 2013-03-26 22:30:16

+0

也可以在運行之前將每個測試的名稱打印到stderr。這很粗魯,但會告訴你。 – dspyz 2013-03-26 22:33:08

回答

2

您可以嘗試明確像這樣的命令行命名的組(S):

mvn clean install -Dtest.groups="unit,integration" 

或者乾脆

mvn test -Dtest.groups="unit,integration" 

這是什麼,我每天都在使用的例子。我的測試是在單元集成組。如果您希望運行所有(或某些)測試而不需要明確指定要使用哪個gorups,則必須修改maven配置。在Maven的

+1

這是運行集成測試的錯誤方式,因爲它們應該在集成測試生命週期階段運行,這個階段是在打包階段之後運行的,而且它是由maven-failsafe-plugin而不是maven-surefire-plugin處理的。 – khmarbaise 2013-03-27 07:56:54

+0

我們一直在使用這種方法很長一段時間,我沒有任何負面的經驗。 – 2013-03-28 22:43:32

2

單元測試將他們的名字來選擇應遵循naming convention

<includes> 
<include>**/*Test*.java</include> 
<include>**/*Test.java</include> 
<include>**/*TestCase.java</include> 
</includes> 

而且你需要把測試到默認位置的src /測試/ JAVA/

您可以控制使用僅運行一個測試:

mvn -Dtest=MyTest test 

運行集成測試是在集成測試階段處理的maven-failsafe-plugin的工作。集成測試的命名規則是:

<includes> 
<include>**/*IT*.java</include> 
<include>**/*IT.java</include> 
<include>**/*ITCase.java</include> 
</includes> 

要獲得集成測試運行,你需要添加一個配置部分爲Maven的故障安全的插件。

+0

比你,我有我的測試名稱xxxTests,一旦我改變到xxxTest他們被拾起。 – Airborne 2017-12-08 20:27:28