【SpringBoot Testing】测试类/测试用例格式

spring-boot 专栏收录该内容
74 篇文章 1 订阅

前言

  • springboot 2.3.5.RELEASE

Test Scope Dependencies

需要引入“spring-boot-starter-test”

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

“spring-boot-starter-test”启动器包含以下库:

  • JUnit:单元测试 Java 应用程序的事实标准。
  • Spring 测试和 Spring Boot 测试:对 Spring Boot 应用程序的实用程序和集成测试支持。
  • AssertJ:一个流畅的断言库。
  • Hamcrest:匹配器对象库(也称为约束或谓词)。
  • Mockito:Java模拟框架。
  • JSONassert:JSON 的断言库。
  • JsonPath : JSON 的 XPath。

“spring-boot-starter-test”启动器包含 vintage engine,兼容 Junit 4 和 Junit 5 的测试用例。如果你的项目中没有 Junit 4 的测试用例时,去掉 vintage engine 吧:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
    </exclusions>
</dependency>

编写测试用例

package com.mydomain.myproject;

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

@SpringBootTest
public class TestSpringBoot {
	@Test
	public void testCase01() {
	}
}
  • package com.mydomain.myproject; : 测试用例的所处的package不能乱写。否则,会出现错误java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

  • @SpringBootTest : 使用 Junit 4 时,需要搭配 @RunWith(SpringRunner.class) 使用。Junit 5 不需要这样。

  • @Test :在测试用例上添加 @Test ,让 Junit 能够找到它。

Junit 4 时这样写:

package com.mydomain.myproject;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestSpringBoot {
	@Test
	public void testCase01() {
	}
}

测试用例该放哪个package

假设项目的目录结构如下:

MyProject
├─src
│  ├─main
│  │  ├─java
│  │  │  └─com
│  │  │     └─mydomain
│  │  │        └─myproject
│  │  │           ├─SpringbootApplication.java
│  │  │           └─...
│  │  └─resources
│  │      └─...
│  └─test
│      ├─java
│      │  └─com
│      │     └─mydomain
│      │         ├─TestSpringBoot1.java 
│      │         └─myproject
│      │            ├─TestSpringBoot2.java 
│      │            └─service
│      │               └─TestSpringBoot3.java 
│      └─resources
└─POM.xml
  • TestSpringBoot1.java 运行时,会出现错误 java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
  • TestSpringBoot2.java 运行时,不会出先错误。
  • TestSpringBoot3.java 运行时,不会出先错误。

这跟 Spring Boot Test 检测配置的方式有关。它会尝试寻找 @SpringBootApplication@SpringBootConfiguration。为此需要满足几个条件:

  • 你的项目的代码结构符合 Spring Boot 代码结构
  • 从测试用例所在的 package 开始寻找,并逐层向上寻找。直到寻找 @SpringBootApplication@SpringBootConfiguration 为止。

因此,从 TestSpringBoot1.java 所在目录开始向上寻找时,找不到 @SpringBootApplication@SpringBootConfiguration。所以,会出现错误 java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
<p style="color:#666666;"> <span style="font-size:14px;">本门课程重实战,将基础知识拆解到项目里,让你在项目情境里学知识。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">这样的学习方式能让你保持兴趣、充满动力,时刻知道学的东西能用在哪、能怎么用。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">平时不明白的知识点,放在项目里去理解就恍然大悟了。</span> </p> <p style="color:#666666;"> <span></span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>一、融汇贯通</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">本视频采用了前后端分离的开发模式,前端使用Vue.js+Element UI实现了Web页面的呈现,后端使用Python 的Django框架实现了数据访问的接口,前端通过Axios访问后端接口获得数据。在学习完本章节后,真正理解前后端的各自承担的工作。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>二、贴近实战</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">本系列课程为练手项目实战:学生管理系统v4.0的开发,项目包含了如下几个内容:项目的总体介绍、基本功能的演示、Vuejs的初始化、Element UI的使用、在Django中实现针对数据的增删改查的接口、在Vuejs中实现前端增删改查的调用、实现文件的上传、实现表格的分页、实现导出数据到Excel、实现通过Excel导入数据、实现针对表格的批量化操作等等,所有的功能都通过演示完成、贴近了实战</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>三、课程亮点</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">在本案例中,最大的亮点在于前后端做了分离,真正理解前后端的各自承担的工作。前端如何和后端交互</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>适合人群:</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">1、有Python语言基础、web前端基础,想要深入学习Python Web框架的朋友;</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">2、有Django基础,但是想学习企业级项目实战的朋友;</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">3、有MySQL数据库基础的朋友</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="font-size:14px;"><img alt="" src="https://img-bss.csdnimg.cn/202009070752197496.png" /><br /> </span> </p> <p style="color:#666666;"> <span style="font-size:14px;"><br /> </span> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值