单元测试
JUnit 简介
JUnit 官网:https://junit.org/。JUnit 是一个用于编写可重复测试的简单框架。它是用于单元测试框架的 xUnit 体系结构的一个实例。
JUnit 的特点:
(1) 针对于 Java 语言特定设计的单元测试框架,使用非常广泛。
(2) 特定领域的标准测试框架。
(3) 能够在多种 IDE 开发平台使用,包含 Idea、Eclipse 中进行集成。
(4) 能够方便由 Maven 引入使用。
(5) 可以方便的编写单元测试代码,查看测试结果等。
JUnit 的重要概念
| 名称 | 功能作用 |
|---|---|
| Assert | 断言方法集合 |
| TestCase | 表示一个测试案例 |
| TestSuite | 包含一组 TestCase,构成一组测试 |
| TestResult | 收集测试结果 |
JUnit 的一些注意事项及规范:
(1) 测试方法必须使用 @Test 修饰
(2) 测试方法必须使用 public void 进行修饰,不能带参数
(3) 测试代码的包应该和被测试代码包结构保持一致
(4) 测试单元中的每个方法必须可以独立测试,方法间不能有任何依赖
(5) 测试类一般使用 Test 作为类名的后缀
(6) 测试方法使一般用 test 作为方法名的前缀
JUnit 失败结果说明:
(1) Failure:测试结果和预期结果不一致导致,表示测试不通过
(2) error:由异常代码引起,它可以产生于测试代码本身的错误,也可以是被测代码的 Bug
JUnit 断言的 API
| 断言方法 | 断言描述 |
|---|---|
| assertNull(String message, Object object) | 检查对象是否为空,不为空报错 |
| assertNotNull(String message, Object object) | 检查对象是否不为空,为空报错 |
| assertEquals(String message, Object expected, Object actual) | 检查对象值是否相等,不相等报错 |
| assertTrue(String message, boolean condition) | 检查条件是否为真,不为真报错 |
| assertFalse(String message, boolean condition) | 检查条件是否为假,为真报错 |
| assertSame(String message, Object expected, Object actual) | 检查对象引用是否相等,不相等报错 |
| assertNotSame(String message, Object unexpected, Object actual) | 检查对象引用是否不等,相等报错 |
| assertArrayEquals(String message, Object[] expecteds, Object[] actuals) | 检查数组值是否相等,遍历比较,不相等报错 |
| assertArrayEquals(String message, Object[] expecteds, Object[] actuals) | 检查数组值是否相等,遍历比较,不相等报错 |
| assertThat(String reason, T actual, Matcher<? super T> matcher) | 检查对象是否满足给定规则,不满足报错 |
JUnit 常用注解
| 注解 | 说明 |
|---|---|
| @Test | 定义一个测试方法 @Test (excepted=xx.class): xx.class 表示异常类,表示测试的方法抛出此异常时,认为是正常的测试通过的 @Test (timeout = 毫秒数) : 测试方法执行时间是否符合预期。 |
| @BeforeClass | 在所有的方法执行前被执行,static 方法全局只会执行一次,而且第一个运行。 |
| @AfterClass | 在所有的方法执行之后进行执行,static 方法全局只会执行一次,最后一个运行。 |
| @Before | 在每一个测试方法被运行前执行一次。 |
| @After | 在每一个测试方法运行后被执行一次。 |
| @Ignore | 所修饰的测试方法会被测试运行器忽略。 |
| @RunWith | 可以更改测试执行器使用 junit 测试执行器。 |
Mockito API
| 语法 | 说明 |
|---|---|
| mock | 模拟一个需要的对象。 |
| when | 一般配合 thenXXX 一起使用,表示当执行什么操作之后怎样。 |
| any | 返回一个特定对象的缺省值,上例中标识可以填写任何 String 类型的数据。 |
| theReturn | 在执行特定操作后返回指定结果。 |
| spy | 创造一个监控对象。 |
| verify | 验证特定的行为。 |
| doReturn | 返回结果。 |
| doThrow | 抛出特定异常。 |
| doAnswer | 做一个自定义响应。 |
| times | 操作执行次数。 |
| atLeastOnce | 操作至少要执行一次。 |
| atLeast | 操作至少执行指定的次数。 |
| atMost | 操作至多执行指定的次数。 |
| atMostOnce | 操作至多执行一次。 |
| doNothing | 不做任何的处理。 |
| doReturn | 返回一个结果。 |
| doThrow | 抛出一个指定异常。 |
| doAnswer | 指定一个特定操作。 |
| doCallRealMethod | 用于监控对象返回一个真实结果。 |
I have a dream : Sandy beach B-J-N.
浙公网安备 33010602011771号