使用maven项目测试另一个项目

时间:2014-11-25 17:28:15

标签: java maven junit dependencies project

我必须做以下事情:

  • 在maven中创建一个项目“A”。
  • 创建另一个项目“B”,其中包含“A”
  • 的JUnit测试
  • 添加maven依赖项,以便B用于测试A

有许多资源描述了如何将测试添加到现有项目中,但我没有找到为单元测试添加另一个项目的方法。

以下是我的想法:

项目A

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>group</groupId>
    <artifactId>A</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>group</groupId>
            <artifactId>B</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

项目B(测试)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>group</groupId>
    <artifactId>B</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>group</groupId>
            <artifactId>A</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
    </dependencies>
</project>

单元测试(占位符)

package group.B;

import org.junit.*;
import group.A.aClass;


public class aClassTest {

    @Test 
    void testTest() {
        assert(false);  // this should fail, right?
    }
}

我正在使用Netbeans和Maven插件,所以你知道。两个项目现在彼此,依赖关系很好。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您的上述内容会产生循环依赖关系。

我过去做过这个,不是为了单元测试,而是为了进行集成测试。我建议B取决于A(A不依赖于B)。在src/test/java B中编写您需要的所有测试。当您在B上运行mvn test时,它将通过或失败,具体取决于测试是通过还是失败。根据{{​​1}}中的测试,无法编译A失败。