Intellij Idea使用Junit5的@DisplayName不生效

确认 IDEA 版本

首先我的 IDEA 版本是 2019.2,是支持使用 Junit5 的,所以应该不需要安装额外的插件。

Idea 官方博客表示支持JUnit5测试框架是IntelliJ IDEA 2016.2新特性的其中一个:

Using JUnit 5 in IntelliJ IDEA

国内的媒体也翻译并转发了这篇报道:

搜狐:在IntelliJ IDEA中使用JUnit5

那问题就在于我使用 Junit5 的方式不正确?

问题重现

首先我当时参考的是这篇文章: here

于是乎,我的依赖是这样的


    
        org.junit.platform
        junit-platform-launcher
        1.7.1
        test
    
    
        org.junit.jupiter
        junit-jupiter-engine
        5.7.1
        test
    
    
        org.junit.vintage
        junit-vintage-engine
        5.7.1
        test
    

然后,我在 src/test/java 中创建了 FirstTest.java

import org.junit.Assert;
import org.junit.Test;
import org.junit.jupiter.api.DisplayName;

import java.util.ArrayList;
import java.util.List;

public class FirstTest {

    @Test
    @DisplayName("首次测试")
    public void first_test() {
        List list = new ArrayList();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        Assert.assertEquals(3, list.size());
    }
}

执行结果,本想看看 Junit5 的 DisplayName 的效果,但是结果却和 Junit4 一致?Junit5 的 @DisplayName 完全没起作用啊?

原因竟在 import

找了好久,我才发现问题的所在。原因竟然是导入 @Test 包错误

√ 正确导入示例: import org.junit.jupiter.api.Test;

× 错误导入示例: import org.junit.Test;

结语

这个问题,当时花了将近 10 min 才找到答案。感觉还是对 Junit5 的三个子项目 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage 理解不深。
其实,我还发现新建一个 Java8 编译的 Maven 项目时,只需要依赖 Jupiter 就够了。


    
        org.junit.jupiter
        junit-jupiter-engine
        5.7.1
        test
    

如果只依赖 Jupiter, 就不会引用到 Junit4 的 org.junit.Test 了,也就不会出现这个低级错误了。

你可能感兴趣的:(javajunit5)