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

 更新时间:2023年04月09日 16:37:10   作者:如风暖阳  
本篇文章主要详细介绍单元测试工具JUnit的使用,文章中有详细的代码实例,有一定的参考价值,需要的朋友可以参考阅读

🍅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必须大写)

到此这篇关于Java单元测试工具之JUnit的使用的文章就介绍到这了,更多相关JUnit使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java基础之方法重写详解

    Java基础之方法重写详解

    这篇文章主要介绍了Java基础之方法重写详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • spring-boot-maven-plugin:unknown的完美解决方法

    spring-boot-maven-plugin:unknown的完美解决方法

    这篇文章主要介绍了spring-boot-maven-plugin:unknown的完美解决方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Java利用文件输入输出流实现文件夹内所有文件拷贝到另一个文件夹

    Java利用文件输入输出流实现文件夹内所有文件拷贝到另一个文件夹

    这篇文章主要介绍了Java实现文件夹内所有文件拷贝到另一个文件夹,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • springboot如何接收get和post请求参数

    springboot如何接收get和post请求参数

    这篇文章主要介绍了springboot如何接收get和post请求参数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • 关于Java中的 JSP 详解

    关于Java中的 JSP 详解

    JSP 代表 Java 服务器页面。它是一种在应用服务器端使用的编程工具。JSP 基本上用于支持平台–独立和动态的方法来构建 Web 依赖的应用程序。JSP 页面类似于 ASP 页面,因为它们是在服务器上编译的,而不是在用户的 Web 浏览器上进行编译。下面来看看文章的详细介绍内容
    2021-11-11
  • Spring batch批处理框架

    Spring batch批处理框架

    本文主要介绍了Spring batch批处理框架的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-04-04
  • 分享Java程序员应该知道的10个调试技巧

    分享Java程序员应该知道的10个调试技巧

    在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序。但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE,我们会把重点放在运行时上面
    2012-09-09
  • SpringCloud升级2020.0.x版之OpenFeign简介与使用实现思路

    SpringCloud升级2020.0.x版之OpenFeign简介与使用实现思路

    在微服务系统中,我们经常会进行 RPC 调用。在 Spring Cloud 体系中,RPC 调用一般就是 HTTP 协议的调用。对于每次调用,都要经过一系列详细步骤,接下来通过本文给大家介绍SpringCloud OpenFeign简介与使用,感兴趣的朋友一起看看吧
    2021-10-10
  • 了解java Struts拦截器的相关操作

    了解java Struts拦截器的相关操作

    Struts为我们实现了很多的功能,比如数据自动封装,文件上传功能阿。Struts为我们提供的这些功能都是通过拦截器完成的。下面我们来详细了解一下吧
    2019-06-06
  • 详解SpringBoot缓存的实例代码(EhCache 2.x 篇)

    详解SpringBoot缓存的实例代码(EhCache 2.x 篇)

    这篇文章主要介绍了详解SpringBoot缓存的实例代码(EhCache 2.x 篇),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07

最新评论