我的maven存储库中有一个包含junit测试的jar,它应该在不同的项目中运行,因为它能够检查项目并测试它的某些功能。不幸的是,surefire不会接收jar中包含的测试,如Feature Request shows。
在功能请求中,他们建议解压jar,然后通过surefire执行。
我使用maven-dependency-plugin成功解压缩了jar,但无论如何都没有执行包含的测试。这就是我如何配置maven-dependency-plugin以解压我的jar:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>process-test-classes</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>de.mwx.test</groupId>
<artifactId>selenium-test-base</artifactId>
<version>0.1</version>
<overWrite>true</overWrite>
<outputDirectory>
${project.build.directory}/classes
</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
任何帮助都会得到满足。
答案 0 :(得分:34)
有一种从另一个jar在maven中运行测试的新方法。 从maven-surefire-plugin 2.15版开始,你可以告诉maven扫描你的测试罐进行测试并运行它们。 您不需要提取测试jar。 只需在测试jar中添加一个依赖项,然后:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.15</version>
<configuration>
<dependenciesToScan>
<dependency>test.jar.group:test.jar.artifact.id</dependency>
</dependenciesToScan>
</configuration>
</plugin>
从https://gist.github.com/aslakknutsen/4520226取出这些东西 并https://issues.apache.org/jira/browse/SUREFIRE-569
答案 1 :(得分:2)
(这只是重述khmarbaise上面的评论,但由于没有澄清,我认为值得重申):
使用test-classes目录而不是classes文件夹作为outputDirectory:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>process-test-classes</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>de.mwx.test</groupId>
<artifactId>selenium-test-base</artifactId>
<version>0.1</version>
<overWrite>true</overWrite>
<outputDirectory>
${project.build.directory}/test-classes
</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
答案 2 :(得分:1)
如问题中所述,您需要一个包含在项目中的套件,该套件不在测试罐中。