一、JUnit概述&配置
1、Junit是什么?
Junit是一个Java 编程语言的开源测试框架,用于编写和运行测试。官网 地址:/junit4/
2、Maven配置
?xml version="1.0" encoding="UTF-8"?>
<project xmlns="/POM/4.0.0" xmlns:xsi="http:///2001/XMLSchema-instance"
xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.">
<modelVersion>4.0.0</modelVersion>
<groupId>junit</groupId>
<artifactId>junitTest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- /artifact/junit/junit -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
二、Assertions 断言
JUnit提供了一些辅助的函数,用来判断被测试的方法是否如我们预期的效果一样正常执行。这些辅助函数被称之为断言。
常用断言:
方法 | 示例 | 功能 |
---|---|---|
assertArrayEquals | assertArrayEquals("message", expected, actual); | 判断两个数组是否相等 |
assertEquals | assertEquals("message", "text", "text"); | 判断两个对象是否相等 |
assertFalse | assertFalse("failure - should be false", false); | 判断表达式是否为false |
testAssertTrue | assertTrue("failure - should be true", true); | 判断表达式是否为true |
assertNotNull | assertNotNull("should not be null", new Object()); | 判断是否非空 |
assertNull | assertNull("should be null", null); | 判断是否为空 |
assertNotSame | assertNotSame("should not be same Object", new Object(), new Object()); | 判断是否为不同对象 |
assertSame | assertSame("should be same", aNumber, aNumber); | 判断是否为同一对象 |
...... | ...... | ...... |
三、Test Runners 测试运行器
JUnit中所有的测试方法都是由测试运行器负责执行。当一个类被@RunWith注释或拓展了一个@RunWith注释的类,JUnit将会使用引用的类来执行测试,而不是使用JUnit内置的运行器。
(, ...);
Specialized Runners:
Suite:Suite是一个标准的运行器,允许手动构建包含来自许多类的测试集。
Parameterized:Parameterized是一个实现参数化测试的标准运行器。运行参数化测试类时,测试方法和测试数据进行合并来创建测试实例。
Categories:Categories运行器来制定分类,定义测试被包含或排除。
四、Aggregating tests in suites 套件
测试套件用于捆绑几个单元测试用例并且一起执行他们,使用@RunWith 和 @Suite 注解。
@RunWith()
@({, })
public class SuiteTest {
// the class remains empty, used only as a holder for the above annotations
}
五、Test execution order 执行顺序
要改变测试执行的顺序只需要在测试类上使用 @FixMethodOrder注解,并指定一个可用的MethodSorter即可:
@FixMethodOrder():JUnit默认使用一个确定的,但不可预测的顺序
@FixMethodOrder(): 保留测试方法的执行顺序为JVM返回的顺序,每次测试的执行顺序有可能会所不同
@FixMethodOrder(MethodSorters.NAME_ASCENDING):根据测试方法的方法名排序,按照词典排序规则(ASC从小到大递增)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class ExecutionOrderTest {
@Test
public void testB() {
("second");
}
@Test
public void testA() {
("first");
}
@Test
public void testC() {
("third");
}
}
运行结果:
first
second
third
六、Expected Exceptions 异常测试
用