如何为JUnit测试使用一个maven依赖项,为构建使用另一个依赖项?

时间:2013-10-29 13:36:42

标签: maven junit jenkins scope simulator

我正面临一种情况,我认为Maven为我提供了正确的工具。 无论是我错了还是Maven; o)

严重。

我们正在编写软件来使用第三方库,我们称之为prod.jar。此lib需要一个可以连接到prod.jar服务器的环境。 显然,我们的詹金斯不是也不能以这种方式建立。因此,当使用prod.jar运行测试时,一切都将失败,因为无法建立连接。

我的想法是编写一个模拟器,其行为类似于真正的prod.jar,可以用于单元测试,名为simulator.jar。 prod.jar和simulator.jar都拥有相同类名的相同包。它们只在功能上有所不同。我已经这样做了,以便在Jenkins的JUnit端进行开发和覆盖。当然,我们也会对prod.jar进行测试,但不会对Jenkins进行测试。

所以我做的是创建两个eclipse项目:

  • prod-code:使用带有prod.jar作为依赖项的pom.xml
  • simulator-code:使用pom.xml,将simulator.jar作为依赖项

因此,根据您作为依赖项添加到主项目的项目,使用模拟器或生产代码。这很好。

但是我们得到的错误是构建包含错误的jar。

如果可能的话,如何设置maven,以便我可以使用相同的pom,但可能使用不同的mvn参数,在测试过程中使用模拟器并在构建过程中使用prod代码。 / p>

我尝试使用maven配置文件,但在使用构建jar时,它会抱怨。

    <profiles>
    <profile>
        <id>simulator</id>
        <dependencies>
            <dependency>
                <groupId>main-project</groupId>
                <artifactId>simulator</artifactId>
            </dependency>
        </dependencies>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>jenkins</id>
            <dependency>
                <groupId>main-project</groupId>
                <artifactId>simulator</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>main-project/groupId>
                <artifactId>prod</artifactId>
            </dependency>
        </dependencies>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>realSystem</id>
        <dependencies>
            <dependency>
                <groupId>main-project</groupId>
                <artifactId>prod</artifactId>
            </dependency>
        </dependencies>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
    </profile>
</profiles>

任何帮助表示感谢。

非常感谢提前。

0 个答案:

没有答案