简介
JUnit 是一个用于Java 编程语言的 单元测试 框架和 回归测试 框架。
JUnit的特点:
- 开放的资源框架
- 提供注释来识别测试方法
- 提供断言来测试预期结果
- 提供测试运行来运行测试。
- 运行速度快,优雅简洁
- 可以自动运行并且检查自身结果并提供即时反馈
使用
断言
断言是JUnit中主要的功能,在JUnit中所有的断言都包含在 Assert 类中。
Assert类中主要方法如下:
方法名 | 方法描述 |
---|---|
assertEquals | 断言传入的预期值与实际值是相等的 |
assertNotEquals | 断言传入的预期值与实际值是不相等的 |
assertArrayEquals | 断言传入的预期数组与实际数组是相等的 |
assertNull | 断言传入的对象是为空 |
assertNotNull | 断言传入的对象是不为空 |
assertTrue | 断言条件为真 |
assertFalse | 断言条件为假 |
assertSame | 断言两个对象引用同一个对象,相当于“==” |
assertNotSame | 断言两个对象引用不同的对象,相当于“!=” |
assertThat | 断言实际值是否满足指定的条件 |
注意:上面的方法都为Assert的静态方法,通过Assert.xxx
调用,如果需要直接调用,需要加上 import static org.junit.Assert.*;
执行顺序
在JUnit中通过@BeforeClass
、@Before
、@Test
、@After
和@AfterClass
注解来确定执行顺序。
注解 | 介绍 |
---|---|
@beforeClass() |
注解的方法首先执行,并且只执行一次。 |
@afterClass() |
注解的方法最后执行,并且只执行一次。 |
@before() |
注解的方法针对每一个测试用例执行,但是是在执行测试用例之前。 |
@after() |
注解的方法针对每一个测试用例执行,但是是在执行测试用例之后。 |
@Test |
在 before() 方法和 after() 方法之间,执行每一个测试用例。执行顺序根据代码位置来决定 |
示例如下:
@BeforeClass
public static void beforeClass() {
System.out.println("in before class");
}
//execute only once, in the end
@AfterClass
public static void afterClass() {
System.out.println("in after class");
}
//execute for each test, before executing test
@Before
public void before() {
System.out.println("in before");
}
//execute for each test, after executing test
@After
public void after() {
System.out.println("in after");
}
//test case 1
@Test
public void testCase1() {
System.out.println("in test case 1");
}
//test case 2
@Test
public void testCase2() {
System.out.println("in test case 2");
}
结果如图:
编写测试
下面是我们要测试的加密程序
public class Encryption {
/**
* 加密程序,算法是将字符串反转,如 abc 会转为为 cba
* @param content
* @return
*/
public static String encryption(String content){
if