代码之家  ›  专栏  ›  技术社区  ›  bmargulies

从类路径运行maven测试

  •  4
  • bmargulies  · 技术社区  · 14 年前

    为了清理一些乱七八糟的东西,我开始将我的测试代码全部放在一个普通的java项目中(全部放在src/main/java中),然后将其声明为 <scope>test</scope> 并期望测试运行。

    我在这里看到了一个非常明显的解决方案,它涉及到buildhelper插件,并将测试作为源目录添加到测试编译环境中,但我希望避免这种情况。

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

    3 回复  |  直到 14 年前
        1
  •  8
  •   JodaStephen    11 年前

    <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部分声明实际的依赖关系:

    <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>
    
        2
  •  3
  •   Pascal Thivent    14 年前

    这是目前不可能的开箱即用,surefire只是查看 target/test-classes

    SUREFIRE-569 - There should be a way to run unit tests from a dependency jar .

    当前的解决方法是使用 dependency:unpack 打开罐子 目标/测试类 test 阶段。

        3
  •  1
  •   Peter Tillemans    14 年前

    你不能反过来做吗?

    我的意思是把代码放在src/test/java中,依赖于主模块,然后在测试模块中运行测试?