Junit5学习笔记

Junit5知识笔记

与之前的版本不同: Junit5由三个不同的子项目构成 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

  • JUnit Platform:是基于JVM的运行测试的基础框架在,它定义了开发运行在这个测试框架上的TestEngine API。此外该平台提供了一个控制台启动器,可以从命令行启动平台,可以为Gradle和 Maven构建插件, 同时提供基于JUnit 4的Runner。

  • JUnit Jupiter:是在JUnit 5中编写测试和扩展的新编程模型和扩展模型的组合.Jupiter子项目提供了一个TestEngine在平台上运行基于Jupiter的测试。

  • JUnit Vintage:提供了一个TestEngine在平台上运行基于JUnit 3和JUnit 4的测试。

一、注解:

* @BeforeAll 只执行一次,执行时机是在所有测试和 @BeforeEach 注解方法之前

* @BeforeEach 在每个测试执行之前执行

* @AfterEach 在每个测试执行之后执行

* @AfterAll 只执行一次,执行时机是在所有测试和 @AfterEach 注解方法之后

* @ParameterizedTest 表示该方法是一个参数化测试

* @DisplayName 为测试类或测试方法声明一个自定义的显示名称

* @Disable 用于禁用方法

* @Tag 用于声明过滤测试的tag标签,该注解可以用在方法或类上

* @CsvSource 多参数测试

* @MethodSource 多参数测试,

因为框架会为每个测试创建一个单独的实例,在 @BeforeAll/@AfterAll 方法执行时尚无任何测试实例诞生。因此,这两个方法必须定义为静态方法。

二、对比junit4:

Junit4 Junit5
@Test @Test
@BeforeClass @BeforeAll
@AfterClass @AfterAll
@Before @BeforeEach
@After @AfterEach
@Ignore @Disabled
@Category @Tag

三、套件测试

1、@SelectPackages指定通过@RunWith(JUnitPlatform.class)运行测试套件时要选择的包的名称。指定单个包, 将packageName作为参数传递给@SelectPackages注解

  • 单个包示例

  • 多个包示例

  1. 使用@SelectClasses创建测试套件
  • @SelectClasses指定通过@RunWith(JUnitPlatform.class)运行测试套件时要选择的类。指定单个类,将ClassName.class作为参数传递到@SelectClasses注解。

3、@IncludePackages和@ExcludePackages

  • 我们了解到@SelectPackages也会导致其所有子包都被扫描以查找测试类。 如果要排除任何特定的子包,或包括任何包,则可以使用 @IncludePackages和@ExcludePackages注解

4、@IncludeTags和@ExcludeTags

  • 在企业应用中,您可能已经标记了要在特定环境中运行的测试用例,例如开发或生产。 您还可以在测试套件中包含或排除基于这些标记的测试。

@IncludeTags 示例

四、 参数化测试

  • @ValueSource

  • @EnumSource

  • @MethodSource

  • @CsvSource

  • @CsvFileSource

  • @ArgumentsSource

2 个赞