JUnit单元测试工具
- 概念
- JUnit 是一个 Java 语言的单元测试框架
- 单元测试是针对程序的最小单元来进行正确性检验的测试工作,程序单元就是应用的最小可测试部件,一个单元可能是单个程序,类,对象,方法等
- 注意事项
- 测试方法必须使用@Test修饰
- 测试方法必须使用public void进行修饰,不能带参数
- 测试代码的包应该和被测试的代码包结构保持一致
- 测试单元的每个方法必须可以独立测试,方法间不能有任何依赖
- 测试类一般使用Test作为类名的后缀
- 测试方法一般使用test作为方法名的前缀
- Junit4注解
- @Test 将一个普通方法修饰成为一个测试方法
- @Before 会在每个方法执行之前执行,Junit5使用@BeforeEach
- @After 会在每个方法执行之后执行,Junit5使用@AfterEach
- @BeforeClass 会在所有的方法执行之前被执行一次(必须是static的),Junit5使用@BeforeAll
- @AfterClass 会在所有的方法执行之后执行一次(必须是static的),Junit5使用@AfterAll
- @Ignore 所修饰的方法会被测试运行器忽略,Junit5使用@Disabled
- @Parameters 用于参数化数据的,Junit5使用@ParameterizedTest
- @RunWith 修改测试运行器 //RunWith(SpringJUnit4ClassRunner.class) 用于配置spring中测试的环境,Junit5使用@ExtendWith
- @Category 用于声明过滤测试的tags,该注解可以用在方法或类上,,Junit5使用@Tag
- 断言
- assertArrayEquals(expecteds, actuals) //查看两个数组是否相等
- assertEquals(expected, actual) //查看两个对象是否相等
- assertNull(object) //查看对象是否为空
- fail() //让测试失败
- Junit5自带了很多断言,用于验证测试用例是否正确,带有可以接受lambda表达式的重载版本
- assertAll(参数1,…) //多个对象是否相等
- assertTrue(true) //验证Boolean值
- Junit5依赖注入
- 测试类的构造方法和测试方法都可以接受参数,ParameterResolver接口定义了如何在运行时注入参数的方法
- 如果方法上有TestInfo类型的实例,JUnit 5框架就会自动注入该实例,这个实例的几个方法可以让我们获取测试类和测试方法的名称、显示名称、标签等信息
- @DisplayName(“依赖注入”)
- Junit5注解
- @DisplayName(“测试类可以指定显示名称”)
- @RepeatedTest(次数) //让某个测试方法运行多次
- @Nested //嵌套测试