SpringBoot测试类提示没有发现测试(JUnit4和JUnit5注解)

发布时间:2024年01月19日

最近需要进行功能测试,太久没有测试,导致运行测试方法时提示没有发现测试。

先看测试类

@SpringBootTest
@RunWith(SpringRunner.class)
public class Springboot_13_mall_startApplicationTests {
    @Test
    void contextLoads() {
    }
}

自己写的测试类和测试方法代码如下(该代码有部分错误)

package com.itheima.util;

import com.itheima.Springboot_13_mall_startApplicationTests;
import com.itheima.until.RedisIDWorker;
import javax.annotation.Resource;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.junit.Test;
class RedisIDTest extends Springboot_13_mall_startApplicationTests {
    @Resource
    private RedisIDWorker redisIDWorker;
    @Test
    public void Test() throws InterruptedException {
        ExecutorService es= Executors.newFixedThreadPool(100);
        CountDownLatch lath=new CountDownLatch(5);

        Runnable runnable= () -> {
            for(int i=0;i<5;i++){
                System.out.println(redisIDWorker.createId("订单id"));
            }
            lath.countDown();
        };
        long begin=System.currentTimeMillis();
        for(int i=0;i<5;i++){
            es.submit(runnable);
        }
        lath.await();
        long end=System.currentTimeMillis();
        System.out.println("使用的时间为="+(end-begin));
        es.shutdown();
    }
}

就会报错

查找了几篇文章才知道原因,是因为引错包了(原本是想引入JUnit5的),结果引入了JUnit4的包,使用Junit4的@Test注解,但是没有按照JUnit4的书写规范导致报错。

Junit4的使用

首先要先知道@Test来自哪个包,如在代码中@Test注解来自junit4的包。

然后junit4对于测试类有一些要求,就比如测试类需要public修饰,而原本的代码RedisTest没有public修饰,然后就报错提示没有发现测试,如下图

因此只要使用public修饰,就能正常运行,如下图添加public

运行结果如下

这样问题就解决了。

JUnit5

除外如果使用的是JUnit5,一般spring-boot-starter-test就包含了Junit5,当然这个也要看spring-boot-starter-test的版本,这里是2.7.2,如下图。

那么就不需要用public修饰测试类,如下图引入的是JUnit5的注解@Test,同时不用public修饰测试类

测试运行成功。

文章来源:https://blog.csdn.net/m0_71190310/article/details/135658189
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。