• 后端——框架——测试框架——junit——生命周期


      本篇包含两个部分。

    第一部分,介绍测试类的生命周期

    第二部分,介绍测试方法的生命周期。

    1、测试类

    默认情况下,测试类会为每个测试案例方法创建一个实例,即使案例方法上有@Disabled等类似的注解。

    在类上添加@TestInstance注解,它的值有两种:

    LIFE_CYCLE.PER_CLASS,它只会创建一个实例。

    LIFE_CYCLE.PER_METHOD, 每运行一个测试方法,创建一个实例,是默认值。

    junit.jupiter.testinstance.lifecycle.default = per_class,默认的值为per_method。

    当实例创建之后,若实现TestInstancePostProcessor接口,可以自定义初始化过程。

    当实例销毁之前,若实现TestInstancePreDestroyCallback接口,可以在销毁之前回收资源。

    类似于spring框架中的init-method和destory-method,@PostConstruct, @PreDestory机制。

    2、测试方法

    与生命周期相关的方法有:

    @BeforeAll:在所有测试方法开始前运行一次,且只运行一次。

    @BeforeEach: 在每个测试案例开始前运行一次。对于多次运行的,每运行完一次算一次。

    @AfterEach:在每个测试案例结束后运行一次。

    @AfterAll:在所有案例结束后运行一次。

    与生命周期相关的接口有:

    BeforeXXCallback,AfterXXCallback:在对应的方法开始之前运行,结束之后运行。

    InvocationInterceptor:拦截器。

    假设所有都存在,它们的顺序为:

    execute postProcessTestInstance method
    	execute Before all tests
    		execute before Each tests
    			execute beforeTestExecution method
    				execute test case method 1 times
    			execute afterTestExecution method
    		execute After Each tests
    		execute before Each tests
    			execute beforeTestExecution method
    				execute test case method 2 times
    			execute afterTestExecution method
    		execute After Each tests
    	execute After all tests
    execute preDestroyTestInstance method
    

      上述示例为@RepeatedTest,次数为2。它们的层次结构依次是:

    类生命周期

        Before All

           BeforeXXCallback

               InvocationInterceptor

                  测试方法

    注:BeforeXXCallback,InvocationInterceptor, TestInstancePostProcessor等接口属于扩展,需要注册才能生效.

  • 相关阅读:
    Apache Commons介绍(转载)
    MYSQL Nested Join Optimization
    Mysql Nested-Loop Join Algorithms
    jquery eval解析JSON中的注意点介绍
    jspSmartUpload上传下载使用例子
    JavaWeb基础
    (一)Model的产生及处理
    SpringMVC注解@RequestParam全面解析
    @ModelAttribute使用详解
    Spring中Controller和RequestMapping的详解
  • 原文地址:https://www.cnblogs.com/rain144576/p/15580571.html
Copyright © 2020-2023  润新知