从classpath运行maven测试

时间:2010-08-22 21:25:37

标签: maven-2 surefire

为了清理一些巨大的混乱,我开始将我的测试代码全部放在一个普通的java项目中(全部在src / main / java中),然后将其声明为{{1}在另一个项目中依赖,并期望测试运行。

没有这样的运气。 surefire想要运行它可以在源代码中看到的测试。

我可以在这里看到一个非常明显的解决方案,涉及build-helper-plugin并将测试作为源目录添加到测试编译环境中,但我希望避免它。

如果有人想知道,所有这一切的原因是使用故障安全插件运行某些集成测试的POM配置变得如此复杂以至于我想从运行中分离出测试类的编译测试

3 个答案:

答案 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中,取决于你的主模块,并在测试模块中运行测试?