[英]How to use surefire plugin to run test in customized folder structure
我有一個定制的eclipse工作室項目。 對於單元測試,我們正在創建一個測試文件 -
TestJavaSrc/demoTest.java
現在,這個TestJavaSrc文件夾與POM.xml處於同一級別。這是POM.xml -
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo.test</groupId>
<artifactId>demo</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
</plugin>
</plugins>
</build>
</project>
現在,當我將此項目作為mvn test運行時,它無法找到任何測試文件。 而且,當我在命令行上運行以下命令時 -
mvn "-Dtest=TestJavaSrc/DemoTest.java" test
它給了我錯誤 -
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test
(default-test) on project demo: No tests were executed!
(Set -DfailIfNoTests=false to ignore this error.) -> [Help 1]
另外,我的classpath中有JUnit4
有什么我想念的嗎?
在Maven 標准目錄布局中 ,用Java編寫的單元測試應位於src/test/java
:
src
目錄包含用於構建項目,其站點等的所有源材料。 它包含每種類型的子目錄:main
用於主構建工件,test
單元測試代碼和資源,站點等。
因此,Surefire插件將執行完全在該文件夾中的測試; 這可以通過testSourceDirectory
參數進行配置。 請注意,此目錄是包含所有測試的基本源目錄。 這意味着如果該基本目錄是somedir
並且存在一個名為DemoTest.java
的Java類,聲明它位於包foo.bar
,那么磁盤上的文件必須位於somedir/foo/bar/DemoTest.java
。
這是您(錯誤)使用的參數test
輸入的地方:它選擇僅按名稱執行的Java類; 不是通過它的包聲明,也不是通過磁盤上文件的位置。
我建議您將測試類放在該標准目錄中,但如果您真的想這樣做,有多種選擇:
如果您想擁有一個位於Maven項目基本目錄的TestJavaSrc
測試源目錄,那么您可以在POM中使用以下命令對其進行配置:
<build> <testSourceDirectory>${project.basedir}/TestJavaSrc</testSourceDirectory> </build>
如果你想要一個特殊的目錄只是為了那個單獨的測試,也就是說你想保留默認的src/test/java
,但是想要另外考慮這個新的源目錄,那么你可以使用add-test-source
Build Helper Maven插件的add-test-source
目標:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.12</version> <executions> <execution> <id>add-test-source</id> <goals> <goal>add-test-source</goal> </goals> <configuration> <sources> <source>TestJavaSrc</source> </sources> </configuration> </execution> </executions> </plugin>
請注意,這兩種方法都暗示直接位於該文件夾下的demoTest.java
文件將位於默認包中,因此它必須沒有package
聲明。
假設您根本沒有使用src/test/java
進行測試,您可以指示構建使用不同的目錄,例如:
<build>
...
<testSourceDirectory>${project.basedir}/TestJavaSrc</testSourceDirectory>
...
</build>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.