单元测试介绍
每编写完一个函数之后,都应该对这个函数的方方面面进行测试,这样的测试我们称之为单元测试。
Junit 主要注释(等号后面的@为 junit5支持)
@BeforeClass=@BeforeAll 全局只会执行一次,而且是第一个运行
@Before=@BeforeEach 在测试方法运行之前运行
@Test 测试方法
@After=@AfterEach 在测试方法运行之后允许
@AfterClass=@AfterAll 全局只会执行一次,而且是最后一个运行
@Ignore=@Disabled 忽略此方法
Junit断言常用函数
Junit 为我们提供了一些辅助函数来帮助我们确定被测试的方法是否按照预期的效果正常工作。通常把这些辅助函数称为断言。 常用函数如下:
|
方法名 | 方法介绍 |
---|---|
assertArrayEquals(expecteds, actuals) | 查看两个数组是否相等 |
assertEquals(expected, actual) | 查看两个对象是否相等。类似于字符串比较使用的equals()方法 |
assertNotEquals(first, second) | 查看两个对象是否不相等 |
assertNull(object) | 查看对象是否为空 |
assertNotNull(object) | 查看对象是否不为空 |
assertSame(expected, actual) | 查看两个对象的引用是否相等。类似于使用“==”比较两个对象 |
assertNotSame(unexpected, actual) | 查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象 |
assertTrue(condition) | 查看运行结果是否为true |
assertFalse(condition) | 查看运行结果是否为false |
assertThat(actual, matcher) | 查看实际值是否满足指定的条件 |
fail() | 让测试失败 |
编写测试类的原则
- 测试方法必须使用@Test 进行修饰
- 测试方法必须使用public 进行修饰且不带任何参数
- 测试类所在的包名和被测试类所在的包名保持一致
- 测试单元中每个方法必须可以独立测试,测试方法间不能有依赖
测试执行顺序
- 个别步骤使用中可忽略使用
- 单元测试正常执行顺序为:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass
- 测试方法调用顺序为:@Before –> @Test –> @After
好的单元测试标准
- 单元测试应该在最基础,最基本的功能进行类及方法的测试
- 单元测试必须由最熟悉代码的人来编写
代码开发者本人最了解代码的目的、特点和实现的局限性。所以单元测试由开发者自己完成最为合适。 - 单元测试后,机器状态保持不变
测试完成后要对产生的临时文件目录删除,如有数据库相关操作需要避免单元测试不受以前的测试实例干扰。 - 单元测试的运行、通过、失败不依赖于其他测试,可以认为构造数据,以保持单元测试的独立性
- 单元测试要覆盖所有代码路径,包括错误处理路径
- 单元测试应集成到自动测试中,自动化后,每个人都很容易的进行测试,单元测试中出现错误就可以及时被发现和修改。
- 单元测试和产品代码统一保存和维护
评论区