2013-02-15 49 views
-1

我看到一個奇怪的問題:我有大約5個用java編寫的測試用例,而且我使用maven運行這些測試用例,但是我無法運行任何測試用例(.java文件)如果類名不包含關鍵字「測試」。因此,我可以執行任何包含「測試」(例如LoginTest)的類名稱,但不能執行任何沒有「測試」的類名稱(例如LoginModule)。我無法運行任何不包含特定字符串的java文件

+3

你可以顯示你不能運行的類的代碼嗎? – CloudyMarble 2013-02-15 05:47:18

回答

2

這不是奇怪的行爲。這是一個Maven公約。測試類通過以「測試」一詞開始或結束類名來標識。與任何Maven約定一樣,您可以將其更改爲supplying configuration for the surefire plugin,這是運行測試的原因。

0

可能是最簡單的重命名你的測試類。

否則,使用surefire插件,您可以指定要包含哪些測試用例。默認情況下,它具有以下規則:

默認情況下,一定能成功的插件會自動包括所有測試類具有以下通配符模式:

"**/Test*.java" - 包括所有的子目錄和啓動所有的java文件名與「測試」。 "**/*Test.java" - 包含所有以「Test」結尾的子目錄和所有java文件名。 "**/*TestCase.java" - 包含所有以「TestCase」結尾的子目錄和所有java文件名。

可以包括特定的包,如果你想還有:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.13</version> 
    <configuration> 
     <includes> 
     <include>**/package/*.java</include> 
     </includes> 
    </configuration> 
    </plugin> 

http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html

1

謝謝你們,如下更新pom.xml文件後,此問題已得到解決:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
      <includes> 
      <include>**/*Page.java</include> 
      <include>**/Page*.java</include> 
      <include>**/*Test.java</include> 
      <include>**/Test*.java</include> 
     </includes> 
     <redirectTestOutputToFile>true</redirectTestOutputToFile> 
     </configuration> 
</plugin> 
相關問題