依赖注入和测试

时间:2016-07-25 09:58:45

标签: java maven junit maven-surefire-plugin

我有一个包含一些测试的项目,它所做的只是创建一个由其他项目运行的test-jar。它取决于另一个神器,我们称之为工件X

然后有多个其他项目使用test-jar

运行maven-surefire-plugin

我有多个工件X的实现,我想要做的是能够使用我想要的实现运行这些测试,而不是X

所以例如:

项目A中的

我想使用实现A

运行测试 项目B中的

我想使用实现B

运行测试

这似乎不太可能,因为一旦生成test-jar,它就会在其中加上硬件编码X

所以我对任何其他解决方案持开放态度

编辑:

额外信息:

生成测试的项目的pom文件:

用于生成test-jar

的部分
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <execution>
                    <goals>
                        <goal>test-jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

工件X依赖:

<dependency>
        <groupId>com.conztanz</groupId>
        <artifactId>X</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

运行测试的其中一个项目(项目A)的pom文件:

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

理想情况下,我想做的是通过它自己的实现来做一些告诉项目AOverride工件X的事情

我希望现在更有意义

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找名为provided范围

依赖关系看起来像这样:

<dependency>
    <groupId>com.conztanz</groupId>
    <artifactId>X</artifactId>
    <version>1.0-SNAPSHOT</version>
    <scope>provided</scope>
</dependency>

这告诉Maven:&#34;嘿,我需要这个来编译,但不要将它包含在目标输出中,因为容器(或其他东西)将提供jar本身。&#34; < / p>