解决@SpringBootTest 单元测试遇到的坑

目录
  • @SpringBootTest单元测试的坑
    • 1、环境
    • 2、遇到的问题
    • 3、解决方式
  • Test类运行单元测试失效
    • Test测试类无法执行完全问题

@SpringBootTest单元测试的坑

1、环境

spring boot 版本:2.4.3

2、遇到的问题

(1)@Before、@After 失效

(2)org.junit.runners.model.InvalidTestClassError:

3、解决方式

注意 import 的 junit 包的配套问题

#junit5 配套
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

#junit4 配套
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

问题1

  • 在 junit5 中 @Before、@After 用@BeforeEach 、@AfterEach 替代。

问题2

  • (1)主要出现在使用 junit5 配套引用时,新建的单元测试类在单元测试时,会出现报错,也就是说单元测试类的包名与启动类的包名一直,测试类类名只是在启动类的类名上多了一个Tests就无问题。例:启动类名:DomeApplication;那么单元测试类类名就叫DomeApplicationTests,在该类下写的测试方法就无问题。
  • (2)如果想每个控制器类对应一个单元测试类,建议使用junit4 配套,junit5 目前没找到解决方法。

Test类运行单元测试失效

Test测试类无法执行完全问题

再通过java Test类跑批单元测试的时候,发现效果与程序执行的效果不一样,经过debug发现断点无法执行完成。

后来发现问题原因是,test执行单元测试时候如存在线程的情况下,主线程结束后,整个方法就会关闭,方法内部线程有时候不会执行完就结束了,若是方便的话可以直接在主测试方法后面加上,阻断等待语句。

防止测试类主线程提前结束导致线程失效。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 浅谈spring-boot的单元测试中,@Before不被执行的原因

    我们先来看下笔者的单元测试的依赖版本: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePath/> <!-- lookup parent from reposi

  • 使用@SpringBootTest注解进行单元测试

    概述 @SpringBootTest注解是SpringBoot自1.4.0版本开始引入的一个用于测试的注解.基本用法如下: 1. 添加Maven依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <parent> <groupId>org.springframework.boot</gro

  • SpringBoot使用@SpringBootTest注解开发单元测试教程

    概述 @SpringBootTest注解是SpringBoot自1.4.0版本开始引入的一个用于测试的注解.基本用法如下: 1.添加依赖: <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.

  • 解决@SpringBootTest 单元测试遇到的坑

    目录 @SpringBootTest单元测试的坑 1.环境 2.遇到的问题 3.解决方式 Test类运行单元测试失效 Test测试类无法执行完全问题 @SpringBootTest单元测试的坑 1.环境 spring boot 版本:2.4.3 2.遇到的问题 (1)@Before.@After 失效 (2)org.junit.runners.model.InvalidTestClassError: 3.解决方式 注意 import 的 junit 包的配套问题 #junit5 配套 impor

  • SpringBootTest单元测试报错的解决方案

    目录 SpringBootTest单元测试报错 单元测试 @mock和@SpringBootTest使用 一.单元测试工具mock使用 二.springboot使用@SpringBootTest单元测试 三.mock和@springBootTest区别 SpringBootTest单元测试报错 @RunWith(SpringRunner.class) @SpringBootTest(classes = { DataRulesApplication.class }) @EnableAutoConf

  • 解决@springboottest注解无法加载src/main/resources目录下文件

    目录 结论 环境及问题描述 问题分析 1.首先com.xx.xxx.service.SsoService该类存在 2.再看下pom文件的配置 3.这个类是在src/main/resources目录下的资源文件里配置 Springboot微服务框架是目前越来越流行的框架,省去了很多繁琐的xml配置.最近新启了个项目,采用SpringBoot框架从头搭建,中间也遇到过各种坑,现在先描述一下 Junit4单元测试之坑吧. 结论 @SpringBootTest注解,只会加载test路径下的资源文件(即x

  • vue-router之解决addRoutes使用遇到的坑

    最近项目中使用了vue-router的addRoutes这个api,遇到了一个小坑,记录总结一下. 场景复现: 做前端开发的同学,大多都遇到过这种需求:页面菜单根据用户权限动态生成,一个常见的解决方案是: 前端初始化的时候,只挂载不需要权限路由,如登陆,注册等页面路由,然后等用户登录之后,后端返回当前用户的权限表,前端根据这个权限表遍历前端路由表,动态生成用户权限路由,然后使用vue-router提供的addRoutes,将权限路由表动态添加到路由实例中,整个过程大致如下: // router.

  • 解决golang 关于全局变量的坑

    学习golang不久,在定义全局变量的时候遇见了坑.写个小例子,增强记忆. 错误版本 var p int func main() { p, err := test(4) if err != nil { log.Fatal(err) } } func test(i int) (int, error) { return i + 1, nil } 编译一直不通过,p declared and not used.后来查了查资料,看见这种其实是在main里边又重新定义了p,所以一直提示p定义了但是没有使用

  • 解决Android原生定位的坑

    Android原生定位的代码网上已经很多了,就不贴出来. 简单了解下: GPS_PROVIDER:通过手机内置的GPS芯片,利用卫星获取定位信息.位置监听.卫星状态监听很耗电且室内定位很不准确. NETWORK_PROVIDER:网络定位通过基站和WiFi节点,利用节点id在定位数据服务器查询位置信息.但是国内网络不允许,且有消息称Google已不提供该服务.so网上出现的此种方式获取定位信息不可用,也就是说NETWORK_PROVIDER在国内不可用. PASSIVE_PROVIDER:被动定

  • 解决python logging遇到的坑 日志重复打印问题

    python 中 logging模块 假如遇到 多线程 或者 多进程 或者在web框架中自定义logging的话(一个请求就是一个独立的线程)非常容易重复打印日志 和造成内存崩溃,所以: 解决方法如下: 重写日志方法 用类: class Log(): import logging def __init__(self): self.logger = logging.getLogger(__name__) # 以下三行为清空上次文件 # 这为清空当前文件的logging 因为logging会包含所有

  • 解决BufferedReader.readLine()遇见的坑

    目录 BufferedReader.readLine()遇见的坑 今天踩了这个坑,所以做个笔记 所以使用readLine()一定要注意 BufferedReader.readLine解析 BufferedReader.readLine()遇见的坑 在写ftp上传文件至服务器的过程中,有这样一个判断:判断某个文件夹下有多少个文件,内容为null的文件不上传,所以利用BufferedReader读取文件的内容,判断是否为null,所以用到了BufferedReader.readLine(),结果竟然

  • 解决mybatis-plus自定义xml的坑

    目录 mybatis-plus自定义xml的坑 1.properties文件没有指明xml文件路径 2.没有扫描mapper的配置类 3.xml文件命名空间位置没写对 自定义xml的模板 mybatis-plus自定义xml的坑 1.properties文件没有指明xml文件路径 2.没有扫描mapper的配置类 3.xml文件命名空间位置没写对 自定义xml的模板 <?xml version="1.0" encoding="UTF-8" ?> <

  • SpringBootTest--踩坑错误的解决

    目录 SpringBootTest 踩坑 SpringBootTest的一个小坑注意点 1.我当时运行SpringBoot测试类的时候踩这个坑 2.解决方法 SpringBootTest 踩坑 Spring boot降低了我们对spring开发的难度 采用了大量在的自动配置,我们只需要进行简单的基本配置,就能快速开发一个spring应用.同样spring对于单元测试也有场景启动器----spring-boot-starter-test,可以让我们在,spring环境下进行测试. 昨天测试的时候,

随机推荐