首页 > 解决方案 > 未找到测试 - 在准系统 Spring Boot Maven 项目上运行 jUnit 5 测试用例时出现空测试套件

问题描述

所以我们得到了消息

Process finished with exit code 0
Empty test suite.

当尝试在我们的多模块项目上运行 Junit5 测试用例时,为了测试问题的根源,我决定从头开始尝试一个新项目(我使用的是 IntelliJ IDEA 2018.2.4)。

我在以下简单项目 POM 文件中遇到了同样的问题:

<?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>com.org.bu.dep.app</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>2.0.5.RELEASE</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>com.vaadin.external.google</groupId>
                    <artifactId>android-json</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.3.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
            <version>5.3.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

我尝试使用/不使用 junit-vintage-engine 相同的结果。

以下是测试类:

package com.org.bu.dep.app.demo;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class DemoApplicationTests {

    @Test
    public void contextLoads() {
        Assertions.assertTrue(true);
    }

}

在“运行”窗口中,它显示No tests were found

我尝试了许多变体,例如带/不带@SpringBootTest注释,我也尝试过@ExtendWith(SpringExtension.class)但无济于事。

我已经用谷歌搜索了,大多数结果/SackOverflow 的答案似乎来自 2016/2017 年,重点是旧版本的 IntelliJ,它与 Junit 5 有问题,这似乎不相关。

请问,有什么建议吗?如果我们花太多时间,它将被迫恢复到 4,我非常不希望这样做:)

标签: javamavenspring-bootjunit5

解决方案


就我而言,我有一个private测试方法——应该是public.


推荐阅读