maven - 使用 Maven 和 Spring Boot 忽略 JUnit5 测试

标签 maven spring-boot intellij-idea junit5

我目前正在升级一个项目以使用 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.0junit.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 上定义的那个。

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

编辑:

测试类是:
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());
    }

}

最佳答案

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

  • 以字符串“Test”开头或结尾
  • 以字符串“Tests”或“TestCase”结尾

  • 如果是,则尝试添加 junit-platform-surefire-providerjunit-jupiter-enginemaven-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>
    

    关于maven - 使用 Maven 和 Spring Boot 忽略 JUnit5 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58303511/

    相关文章:

    java - 无法在没有 Moskito UI 的情况下找到 Moskito 与 java web 应用程序集成的解决方案

    java - 如何拦截自己创建的JdbcTemplate实例

    java - Spring Boot 无法呈现(非常)简单的 index.jsp

    android-studio - Android Studio 显示错误的文件内容

    debugging - Dart调试器及时调用方法

    android - 从设备 : EOF Android Studio 3. 2.1 获取屏幕截图时出现意外错误

    Maven:仅构建更改的模块并尽快创建 WAR

    java - 我的 Maven 构建中缺少 AbstractAnnotationConfigDispatcherServletInitializer

    java - spring boot集成测试时如何正确连接testcontainers redis?

    java - Springframework 无法解析 Controller 上的配置类