如何使用测试创建jar并从另一个版本的项目运行它?

时间:2016-10-21 08:46:18

标签: java maven unit-testing maven-plugin

我有一个1.0版本的项目,包含3个包(maven项目)。

project1(版本1.0)
--------后向测试(src / test / java + pom.xml)
-------- pack1(src / main / java + pom.xml)
-------- pack2(src / main / java + pom.xml)

我想保存带有测试的反向测试jar,以便在版本1.x中使用,其中x> 1.
版本1.x的项目将显示如下:

project1(版本1.1)
-------- run-tests(pom.xml)
-------- pack1(src / main / java + pom.xml)
-------- pack2(src / main / java + pom.xml)

问题:为了让我运行测试,后向测试和运行测试包中的pom.xml文件应该如何? 我必须提一下,后向测试具有pack1和pack2的依赖性 谢谢。

编辑:
我在运行测试pom.xml中尝试了类似的东西:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.15</version>
    <configuration>
        <dependenciesToScan>
            <dependency>groupId:artifactId</dependency>
        </dependenciesToScan>
    </configuration>
</plugin>

但它不起作用。

Edit2:@andolsi zied的答案可能很好,但是在mvn clean install上,即使我在我测试的类中添加了错误的更改,也没有失败的测试。

2 个答案:

答案 0 :(得分:0)

在向后测试中,将此插件添加到pom.xml,maven将测试类打包在backward-tests-test.jar中

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <goals>
                        <goal>test-jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

在运行测试中添加此依赖项

   <dependency>
        <groupId>groupId</groupId>
        <artifactId>backward-tests</artifactId>
        <version>1.x</version>
        <type>test-jar</type>
        <scope>test</scope>
        <exclusions>
                <exclusion>
                    <groupId>groupId</groupId>
                    <artifactId>pack1</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>groupId</groupId>
                    <artifactId>pack2</artifactId>
                </exclusion>
       </exclusions>
    </dependency>

答案 1 :(得分:0)

针对不同项目版本运行测试的另一种方法是使用git(或任何其他SCM)。

  • 在项目V1中创建一个git存储库
  • 仅检查测试来源
  • 创建一个git-branch project-v1并检查出来。
  • 签入项目生产代码V1
  • 创建一个git-branch project-v2并检查出来。
  • 签入项目生产代码V2

现在您可以对签出的版本(V1或V2)运行测试。另外,通过查看SCM的历史,您可以看到失败的代码的确切区别。