Java单元测试工具之JUnit的使用
作者:如风暖阳 发布时间:2022-09-05 13:20:54
🍅1.注解
JUnit提供了非常强大的注解功能,通过@Test
注解修饰到方法上,该方法就变为了一个测试方法,执行当前类时,会自动的执行该类下所有带@Test
注解的用例。
在使用这些JUnit提供的注解时,需要现在pom.xml文件中进行配置:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
@Test
示例:
除了@Test注解外,还有以下常用注解:
@BeforeEach:当前的方法需要在每个用例执行之前都执行一次
@BeforeAll:当前的方法需要在当前类下所有用例执行之前执行一次,且被该注解修饰的方法必须为静态方法
@AfterEach:当前的方法需要在每个用例执行之后都执行一次
@AfterAll:当前的方法需要在当前类下所有用例执行之后执行一次,且被该注解修饰的方法必须为静态方法
🍅2.断言
检查测试方法的期望结果值和真实返回值,通过Assertions类实现。
断言匹配/不匹配:assertEquals()、assertNotEquals()
断言结果为真/为假:assertTrue()、assertFalse()
断言结果为空/非空:assertNull()、assertNotNull()
@Test
void a() {
Assertions.assertTrue(1==1);
}
🍅3.用例的执行顺序
如下图所示,测试用例的执行并不会按照我们编写代码的顺序来执行
如果在实际测试中,我们需要完成连贯的多个步骤的测试,是需要规定测试用例执行的顺序的,可以通过@order
注解来实现排序:
先使用注解说明当前类下所有的用例需要使用
@Order
注解来进行排序(注意:该注解必须要用在类上)然后通过
@Order
来指定用例的具体顺序
🍅4.参数化
参数化就是尽可能的通过一个用例,多组参数来模拟用户的行为
在使用参数化注解之前需要先用@ParameterizedTest
声明该方法为参数化方法,然后再通过注解提供数据来源。
单参数:@ValueSource
(数据类型方法={参数1,参数2…})
多参数:
1.从注解中手动编写数据源
@CsvSource
({“数据组合1”,“数据组合2”…}),每个双引号是一组参数(测试用例)
2.从第三方csv文件读取数据源如果测试用例较多时,在注解处手动编写数据源就有些不方便,我们这时就可以借助第三方csv文件来读取数据源
动态参数:
// 通过动态方法来提供数据源
@ParameterizedTest
@MethodSource("methodParams")
void dynamicParamsTest(String name,int age) {
System.out.println("name:"+name+",age:"+age);
}
static Stream<Arguments> methodParams() throws InterruptedException {
// 构造动态参数
String[] arr=new String[4];
for (int i=0;i< arr.length;i++) {
Thread.sleep(500);
arr[i]=System.currentTimeMillis()+"";
}
return Stream.of(
Arguments.arguments(arr[0],20),
Arguments.arguments(arr[1],19),
Arguments.arguments(arr[2],18),
Arguments.arguments(arr[3],17)
);
}
注意:当我们不指定数据源方法名时,会自动的找跟用例方法名同名的静态方法
🍅5.测试套件
当我们一个类中有多个测试用例时,我们不可能挨个去运行,那样将会很耗费时间,这时我们就需要测试套件来指定类或者指定包名来运行类下或者包下的所有测试用例。
如果要使用测试套件,首先我们需要先创建一个类,通过@Suite注解标识该类为测试套件类(而不是测试类)
然后指定类或者包来运行其下的所有测试用例
指定类来运行用例:
指定包名来运行包下所有的用例:如果使用包名来指定运行的范围,那么该包下的测试类的命名需要以Test/Tests
结尾(T必须大写)
来源:https://blog.csdn.net/qq_60856948/article/details/129058452


猜你喜欢
- 何为系统APP何为三方APP?位于system分区内的是系统软件,位于data分区得的是第三方后安装的软件系统软件是指控制和协调计算机及外部
- 需求场景最近项目中要做一个音乐播放悬浮按钮的功能,最终实现效果如下:问题暴露悬浮窗布局文件就不放了,就是水平LinearLayout里面放几
- 写在前面并发编程一直都存在,只不过过去的很长时间里,比较难以实现,随着互联网的发展,人口红利的释放,更加友好的支持并发编程已经成了主流编程语
- 只需要在控件TextBox的keypress事件中写入如下代码即可满足要求:代码如下:if (e.KeyChar == '.'
- 最近做了个自定义键盘,但面对不同分辨率的机型其中数字键盘不能根据界面大小自已铺满,但又不能每种机型都做一套吧,所以要做成自适应,那这里主讲思
- 前言:mybatisplus 可以说是对mybatis更好的拓展,一些简单的增删改查的操作已经被作者实现,我们只需引用即可。1.数据库建表这
- 利用Android的ApiDemos的Rotate3dAnimation实现了个图片3D旋转的动画,围绕Y轴进行旋转,还可以实现Z轴的缩放。
- 如果发现maven项目里面src/main/resources下的配置文件或src/main/java下的xml配置文件未能同步至targe
- mybatis oracle 自增序列的代码如下所示:<insert id=" insert " useGener
- 本文实例讲述了Android基于ViewPager+Fragment实现左右滑屏效果的方法。分享给大家供大家参考,具体如下:1.xml布局模
- 1.实现一个ItsClient 客户端用来实例化调用验证功能public class ItsClient {private static f
- 本文实例为大家分享了C语言实现简单弹跳小球的具体代码,供大家参考,具体内容如下本节利用 printf 函数 实现一个在屏幕上弹跳的小球,内容
- 正常情况下,我们是直接去string的length的,但是汉字是有两个字节的,所以直接用length是错的。如下图:所以应该用以下代码来获取
- 什么是流?流:程序和设备之间连接起来的一根用于数据传输的管道,流就是一根管道。流的分类:四大基本抽象流(输入流,输出流,字符流,字节流)文件
- 1、购买或本地生成ssl证书要使用https,首先需要证书,获取证书的两种方式:1、自己通过keytool生成2、通过证书授权机构购买###
- 目录(1)class常量池(2)运行时常量池(3)基本类型包装类常量池(4)字符串常量池总结java中有几种不同的常量池,以下的内容是对ja
- package cn.liangjintang.httpproxy;import java.io.BufferedReader;import
- 场景发布微服务的操作一般都是打完新代码的包,kill掉在跑的应用,替换新的包,启动。spring cloud 中使用eureka为注册中心,
- 最近项目中用到的两种文件上传方式做一下总结:一. uploadify:uploadify控件的scripts和styles在这里:图片上传J
- 假设下面是你的视频网站链接列表,如果别人想爬取你的数据十分轻松,看规则就知道数据库是序列自增的http://www.xxxx.com/vid