5

我有两个 Java 项目,“A”和“B”,B 对 A 有 Maven 依赖:

<dependency>
    <!--  Back end stuff -->
    <groupId>com.myapp</groupId>
    <artifactId>ProjectA</artifactId>
    <version>1.0.0</version>
</dependency>

这两个项目在我的工作站上并排放置在一个共同的父文件夹中:

/Myproject
    /ProjectA
    /ProjectB

我想在项目 B 中的所有单元测试中使用项目 A 的单元测试上下文“test-context.xml”。有没有办法直接引用外部上下文进行测试?这些是使用 Surefire 和 Junit 进行测试的 Maven 项目,但恐怕 Surefire 和 Junit 不是我的强项。我很确定有办法做到这一点,但我不知道在哪里寻找答案 - Spring、Junit、Maven、Surefire ......?

我的项目“A”单元测试类配置如下:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:test-context.xml"})

并且文件“test-context.xml”在项目 A 的 /src/test/resources/test-context.xml 中。理想情况下,我会像这样简单地配置我的项目“B”单元测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"ProjectA-reference:test-context.xml"})

但是,我不知道如何配置 ContextConfiguration 元素以指向另一个项目。有没有人这样做过?

4

1 回答 1

7

在 ProjectA 的 pom 中,执行此操作以生成 test-jar 依赖项:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>test-jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

然后,在 ProjectB 的 pom.xml 中,执行以下操作:

    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ProjectA</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
    </dependency>

最后,在您的 ProjectB 测试类中,您应该能够使用您在上面尝试的类路径方法从 ProjectA 中的 src/test/resources 引用任何 xml 文件。假设您的文件被调用projectA-test-context.xml并驻留在 /src/test/resources/META-INF/spring 中。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/META-INF/spring/projectA-test-context.xml")

编辑编辑了我的答案,将 /src/main/resources 更正为 /src/test/resources。

于 2013-10-21T03:32:30.420 回答