繁体   English   中英

JUnit5 测试被 Maven 和 Spring 引导忽略

[英]JUnit5 tests ignored with Maven and with Spring Boot

我目前正在升级一个项目以使用 JUnit5。 我设法从 jupiter 和 mockito 扩展导入必要的依赖项,以使所有单元测试(Junit 4 和 5)在 IntelliJ 中运行良好。

目前我的工作解决方案有:

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${mockito-core.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-junit-jupiter</artifactId>
        <version>${mockito-core.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
            </exclusion>
        </exclusions>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>

mockito-core.version = 3.0.0 junit.version = 5.2.0

但是,当我通过 Maven 运行测试时,JUnit5 测试将被忽略。

我在这个博客上看到: https://dev.to/martinbelev/how-to-enable-junit-5-in-new-spring-boot-project-29a8 spring-boot-starter-test导入 JUnit4,因此我必须从这个依赖项中排除junit 但是spring-boot-starter-test依赖项是从父 pom 导入的,因此添加此排除项:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>2.0.9.RELEASE</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

没有效果,有效的依赖org.springframework.boot是在旧版本的父 pom 上定义的。

有谁知道我该如何解决这个问题? 先感谢您!

编辑:

测试 class 是:

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
public class SomeTest {

    private static final String TEST = "test";

    @Mock
    RetailerService retailerService;
    private Delivery delivery;

    @BeforeEach
    public void setUp() {
        when(retailerService.getMessage(any(String.class))).thenReturn(TEST);
        delivery = new Delivery(retailerService);
    }

    @Test
    public void should_have_delivery() {
        assertEquals(getExpectedDeliveriesDTOs(), delivery.toDtos());
    }

}

首先 - 请验证您的测试类名称是否:

  1. 以字符串“Test”开头或结尾
  2. 以字符串“Tests”或“TestCase”结尾

如果是,则尝试将junit-platform-surefire-providerjunit-jupiter-engine依赖项添加到maven-surefire-plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.2</version>
    <dependencies>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.version}</version>
        </dependency>
    </dependencies>
</plugin>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM