【发布时间】:2012-05-16 19:58:42
【问题描述】:
我的 maven 存储库中有一个 jar,其中包含 junit 测试,它应该在不同的项目中运行,因为它能够检查项目并测试它的某些功能。不幸的是,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>
如有任何帮助,将不胜感激。
【问题讨论】:
-
为什么测试在另一个罐子里?他们是针对您的项目还是其他项目进行测试?如果是另一个,你为什么要运行它们?如果用于您的应用,为什么它们不在您的项目中?
-
另一个jar其实是一个测试框架,对当前项目进行操作,执行杂项任务。在我看来,这似乎是最模块化的方式:但我猜这不是 surefix 的预期用途。
-
但是 maven 项目已经为项目的测试定义了一个标准。而且 IMO 让项目依赖于其测试是没有意义的——如果有的话,测试将依赖于被测模块,因为测试使用该模块,但反之则不然。
-
如果项目本身就是一个测试,那么让一个项目依赖于它的测试是有意义的。依赖 jar 是一个框架,它调用当前项目中的测试。这使得动态配置一组测试变得容易。
-
IMO,不,这没有意义。