如何将JUnit 5与现有的Eclipse项目集成?

时间:2018-02-28 21:52:33

标签: eclipse maven junit junit5

现有的Eclipse项目使用Maven但不了解JUnit。我应该/可以将JUnit集成到现有项目中,还是应该创建一个专门用于JUnit的新项目,还是有更好的选择?

2 个答案:

答案 0 :(得分:4)

您可以通过在pom.xml中包含以下依赖项来将JUnit5添加到该项目中:

<properties>
    <junit.jupiter.version>5.0.1</junit.jupiter.version>
    <junit.platform.version>1.0.1</junit.platform.version> 
</properties>

<!--
    JUnit5 dependencies:
     * junit-jupiter-api: for writing JUnit5 tests
     * junit-jupiter-engine: for running JUnit5 tests
     * junit-platform-xxx: the foundation for JUnit5
     * (Optionally) you might want to include junit-vintage-engine for running JUnit4 tests       
-->
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>${junit.jupiter.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>${junit.jupiter.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>${junit.platform.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-runner</artifactId>
    <version>${junit.platform.version}</version>
    <scope>test</scope>
</dependency>

要启用Maven Surefire以运行JUnit5测试,只需在pom.xml中包含以下插件定义:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${maven.surefire.plugin.version}</version>
    <configuration>
        <excludes>
            <exclude>**/MongoPopulatorTool.java</exclude>
        </excludes>
    </configuration>
    <dependencies>
        <!-- integrates JUnit5 with surefire -->
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>${junit.platform.version}</version>
        </dependency>
        <!-- ensures that a JUnit5-aware test engine is available on the classpath when running Surefire -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.jupiter.version}</version>
        </dependency>
    </dependencies>
</plugin> 

最后,为了使Eclipse的测试运行器能够运行JUnit5测试,你必须运行Eclipse Oxygen.1a(4.7.1a)版本(或更高版本),看看Eclipse docs

答案 1 :(得分:2)

另一个答案给出了如何将JUnit添加到项目设置中的技术答案。

但抱歉,真正的答案是:不要单元测试添加到您的其他项目中。请改为创建

进行开发时最重要的规则之一是Single Responsibility Principle。任何class / method / xyz应该做一个的事情。

换句话说:您现有的eclipse项目有责任为您的“产品”提供上下文。为测试提供背景是不同的责任。

除此之外,你应该始终遵循“最佳实践”。最佳做法是再次在同一个项目中包含测试和生产代码。

您知道,您绝对希望希望您的测试源代码与生产代码位于相同目录中。因此,您有两个项目,它们都可以使用相同的包 - 但是它们的源代码位于不同的文件夹中!

(你之所以不想这样做:你只想让测试依赖于你的生产代码。但是当文件位于同一目录中时,你可能会无意中在另一个方向上创建依赖关系)< / p>