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示例:

Java单元测试工具之JUnit的使用

除了@Test注解外,还有以下常用注解:

@BeforeEach:当前的方法需要在每个用例执行之前都执行一次
@BeforeAll:当前的方法需要在当前类下所有用例执行之前执行一次,且被该注解修饰的方法必须为静态方法
@AfterEach:当前的方法需要在每个用例执行之后都执行一次
@AfterAll:当前的方法需要在当前类下所有用例执行之后执行一次,且被该注解修饰的方法必须为静态方法

🍅2.断言

检查测试方法的期望结果值和真实返回值,通过Assertions类实现。

  • 断言匹配/不匹配:assertEquals()、assertNotEquals()

  • 断言结果为真/为假:assertTrue()、assertFalse()

  • 断言结果为空/非空:assertNull()、assertNotNull()

@Test
   void a() {
       Assertions.assertTrue(1==1);
   }

🍅3.用例的执行顺序

如下图所示,测试用例的执行并不会按照我们编写代码的顺序来执行

Java单元测试工具之JUnit的使用

如果在实际测试中,我们需要完成连贯的多个步骤的测试,是需要规定测试用例执行的顺序的,可以通过@order注解来实现排序:

  • 先使用注解说明当前类下所有的用例需要使用@Order注解来进行排序(注意:该注解必须要用在类上)

  • 然后通过@Order来指定用例的具体顺序

Java单元测试工具之JUnit的使用

🍅4.参数化

参数化就是尽可能的通过一个用例,多组参数来模拟用户的行为
在使用参数化注解之前需要先用@ParameterizedTest声明该方法为参数化方法,然后再通过注解提供数据来源。

单参数:@ValueSource(数据类型方法={参数1,参数2&hellip;})

Java单元测试工具之JUnit的使用

多参数:

1.从注解中手动编写数据源

@CsvSource({&ldquo;数据组合1&rdquo;,&ldquo;数据组合2&rdquo;&hellip;}),每个双引号是一组参数(测试用例)

Java单元测试工具之JUnit的使用

2.从第三方csv文件读取数据源如果测试用例较多时,在注解处手动编写数据源就有些不方便,我们这时就可以借助第三方csv文件来读取数据源

Java单元测试工具之JUnit的使用

Java单元测试工具之JUnit的使用

动态参数:

// 通过动态方法来提供数据源
   @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)
       );
   }

Java单元测试工具之JUnit的使用

注意:当我们不指定数据源方法名时,会自动的找跟用例方法名同名的静态方法

🍅5.测试套件

当我们一个类中有多个测试用例时,我们不可能挨个去运行,那样将会很耗费时间,这时我们就需要测试套件来指定类或者指定包名来运行类下或者包下的所有测试用例。

如果要使用测试套件,首先我们需要先创建一个类,通过@Suite注解标识该类为测试套件类(而不是测试类)

Java单元测试工具之JUnit的使用

然后指定类或者包来运行其下的所有测试用例

指定类来运行用例:

Java单元测试工具之JUnit的使用

指定包名来运行包下所有的用例:如果使用包名来指定运行的范围,那么该包下的测试类的命名需要以Test/Tests结尾(T必须大写)

Java单元测试工具之JUnit的使用

来源:https://blog.csdn.net/qq_60856948/article/details/129058452

标签:Java,单元测试,JUnit
0
投稿

猜你喜欢

  • 如何利用Android仿微博正文链接交互效果

    2022-03-22 03:41:41
  • java实现幸运抽奖功能

    2023-11-27 07:24:16
  • Android 使用ViewPager实现左右循环滑动及轮播效果

    2022-10-28 15:23:21
  • Java转JSON串的几种方式

    2023-08-24 07:38:47
  • C# 在PDF中创建和填充域

    2022-05-14 05:49:23
  • Java如何在临界区中避免竞态条件

    2022-11-02 09:39:29
  • 简单了解Spring Framework5.0新特性

    2021-08-06 02:21:46
  • Java实现分页的前台页面和后台代码

    2021-07-22 17:10:04
  • spring cloud consul注册的服务报错critical的解决

    2021-05-28 14:13:14
  • java多线程关键字final和static详解

    2022-12-19 19:02:01
  • C#难点逐个击破(4):main函数

    2021-06-18 17:47:43
  • Java 获取当前时间及实现时间倒计时功能【推荐】

    2022-08-21 16:08:27
  • android水平循环滚动控件使用详解

    2023-07-24 15:25:34
  • Java基础-Java常量和常量值

    2023-08-03 03:49:03
  • Swift洗牌动画效果的实现方法

    2023-06-21 14:01:56
  • Android 模仿iPhone列表数据View刷新动画详解

    2021-10-05 07:57:47
  • Android编程动态按钮实现方法

    2021-12-31 18:05:17
  • mybatis中foreach嵌套if标签方式

    2023-11-20 23:11:05
  • 关于Spring Boot内存泄露排查的记录

    2023-06-27 18:46:19
  • C#解决多IfElse判断语句和Switch语句问题的方法分享

    2023-04-06 18:36:22
  • asp之家 软件编程 m.aspxhome.com