为了清理一些巨大的混乱,我开始将我的测试代码全部放在一个普通的java项目中(全部在src / main / java中),然后将其声明为{{1}在另一个项目中依赖,并期望测试运行。
没有这样的运气。 surefire想要运行它可以在源代码中看到的测试。
我可以在这里看到一个非常明显的解决方案,涉及build-helper-plugin并将测试作为源目录添加到测试编译环境中,但我希望避免它。
如果有人想知道,所有这一切的原因是使用故障安全插件运行某些集成测试的POM配置变得如此复杂以至于我想从运行中分离出测试类的编译测试
答案 0 :(得分:6)
现在可以使用Maven Surefire v2.15。只需将以下类型的配置添加到surefire插件:
<build>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.15</version>
<configuration>
<dependenciesToScan>
<dependency>com.group.id:my-artifact</dependency>
<dependency>com.group.id:my-other-artifact</dependency>
</dependenciesToScan>
...
</configuration>
...
</plugin>
...
</build>
您还应该在依赖项部分中声明实际的依赖项:
<dependencies>
<dependency>
<groupId>com.group.id</groupId>
<artifactId>my-artifact</artifactId>
<type>test-jar</type>
<version>1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.group.id</groupId>
<artifactId>my-other-artifact</artifactId>
<type>test-jar</type>
<version>1.1</version>
<scope>test</scope>
</dependency>
</dependencies>
答案 1 :(得分:3)
没有这样的运气。 surefire想要运行它可以在源代码中看到的测试。
目前无法开箱即用,当然只需查看target/test-classes
中的课程:
这实际上记录为SUREFIRE-569 - There should be a way to run unit tests from a dependency jar。
我可以在这里看到一个非常明显的解决方案,涉及build-helper-plugin并将测试作为源目录添加到测试编译环境中,但我希望避免它。
目前的解决方法是在dependency:unpack
阶段之前使用target/test-classes
将jar解压缩到test
。
答案 2 :(得分:1)
你不能反过来做吗?
我的意思是将代码放在src / test / java中,取决于你的主模块,并在测试模块中运行测试?