我使用代码生成器JAVA程序生成单元测试源代码到target\generated-test-sources
中,我成功地将其编译到target\test-classes
中,但它们被Maven构建忽略。我使用mvn clean test
启动此构建。
在我的pom.xml文件中,我有一个主类com.mypackage.TestCaseGenerator
的exec目标,我将它绑定到generate-test-sources
阶段。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>myexec</id>
<phase>generate-test-sources</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>java</executable>
<classpathScope>test</classpathScope>
<arguments>
<argument>-classpath</argument>
<classpath/>
<argument>com.mypackage.TestCaseGenerator</argument>
<argument>target/generated-test-sources/somedir</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated-test-sources/somedir</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
当我在target/generated-test-sources/somedir
上使用right-click -> run as JUnit Test
从Eclipse运行测试用例时,测试正常执行。
我错过了一些专业配置?
1条答案
按热度按时间68de4m5k1#
如果您生成的测试的类/文件名与Maven Surefire插件的默认值不匹配,您将必须配置它以包含另一个模式的测试。
请参阅Inclusions and Exclusions of Tests的官方插件文档:
默认情况下,Surefire插件将自动包含具有以下通配符模式的所有测试类:
"**/Test*.java"
-包括其所有子目录和所有以“Test”开头的Java文件名。"**/*Test.java"
-包括其所有子目录和所有以“Test”结尾的Java文件名。"**/*Tests.java"
-包括其所有子目录和所有以“Tests”结尾的Java文件名。"**/*TestCase.java"
-包括其所有子目录和所有以“TestCase”结尾的Java文件名。你可以在插件配置的
<includes>
或<excludes>
部分配置不同的模式。你可以在上面链接的文档页面找到很好的例子。