[英]How to run JUnit Test in maven if the test are not in test dir but in main dir and the classname are not having keywords like .*Test.*
這是背景。
我正在使用螞蟻構建的項目。 當我們用來創建一個新的Class時,我們會在與ant支持的類相同的類中編寫junit測試。ClassName沒有'Test'命名約定。 超過800個Junit測試。
現在,我們需要轉到Maven構建結構。 問題是,maven僅運行類名具有命名約定“ Test”的junit。
如何運行src / main / java / *中的junit測試?
另外,有沒有辦法可以拉出所有帶有“ @Test”注釋的方法?
如果您需要更多信息,請告訴我。
僅僅因為您曾經使用Ant來做過那樣的事情,並不適合現在就繼續使用它。 現在,您已經遷移到Maven,您必須遵循其做事方式並遵守其約定。 其中之一是使您的生產代碼與測試分開。 混合是沒有意義的,因為實際上您是在用無用的(對於代碼的客戶而言)方法亂扔代碼。 盡管您可以繼續這樣做並找到解決方法,但這不是選擇的高標准方法。
下一步真正需要做的是安排一些重構時間並執行以下任務:
創建src/test/java
(和分別創建src/test/java
src/test/resources
)。
為每個包含@Test
注釋方法的類創建一個*Test
類,並將它們放在src/test/java
。
將這些方法移至相應的新類。
將所有僅由測試使用的資源移至src/test/resources
目錄。
您必須更改運行測試的Surefire插件的配置。 我沒有測試過,但是您可以嘗試以下配置:
<build>
<testSourceDirectory>src/main/java</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<includes>
<include>**/*.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
我想既然您正在使用ant,那么您有一個測試套件嗎? 如果是這樣,最簡單的方法是更改配置以使用給定的測試套件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<includes>
<include>AllTest.class</include>
</includes>
</configuration>
</plugin>
但是,我不確定它是否也會出現在src文件夾中,因此您可能必須將測試套件移至測試目錄。
至於拉出所有帶有@Test批注的方法(我假設沒有套件?),如果您不遵循肯定測試類的命名約定,則必須自己做。 制作自己的測試運行器實現並不難,它可以在類路徑或子文件夾中搜索所有類,然后找到符合條件的所有類並將其傳遞給Junit來運行。
如果您使用的是eclipse,則仍可以將其作為Junit測試執行。
實際上,如果您的“測試類”沒有放在test文件夾中,則意味着您不打算在maven build操作中將它們作為“測試”運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.