什么是 JUnit?
JUnit 是一个 Java 编程语言的单元测试框架。JUnit 促进了“先测试后编码”的理念,强调建立测试数据的一段代码,可以先测试,然后再应用。这个方法就好比“测试一点,编码一点,测试一点,编码一点……”,增加了程序员的产量和程序的稳定性,可以减少程序员的压力和花费在排错上的时间。
特点:
JUnit 是一个开放的资源框架,用于编写和运行测试。
提供注释来识别测试方法。
提供断言来测试预期结果。
提供测试运行来运行测试。
JUnit 测试允许你编写代码更快,并能提高质量。
JUnit 优雅简洁。没那么复杂,花费时间较少。
JUnit 测试可以自动运行并且检查自身结果并提供即时反馈。所以也没有必要人工梳理测试结果的报告。
JUnit 测试可以被组织为测试套件,包含测试用例,甚至其他的测试套件。
JUnit 在一个条中显示进度。如果运行良好则是绿色;如果运行失败,则变成红色。
什么是一个单元测试用例?
单元测试用例是一部分代码,可以确保另一端代码(方法)按预期工作。为了迅速达到预期的结果,就需要测试框架。JUnit 是 java 编程语言理想的单元测试框架。
一个正式的编写好的单元测试用例的特点是:已知输入和预期输出,即在测试执行前就已知。已知输入需要测试的先决条件,预期输出需要测试后置条件。
JUnit的使用
Helloworld工程
- 创建一个maven工程,并添加依赖;
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
- 创建计算类Calculator,待测试;
public class Calculator {
public int evaluate(String expression) {
int sum = 0;
for (String summand: expression.split("\\+"))
sum += Integer.valueOf(summand);
return sum;
}
}
- 创建计算类Calculator的相应测试类CalculatorTest,用
@Test
标注测试方法;
import org.junit.Test;
import static junit.framework.TestCase.assertEquals;
/**
* Created by maple on 2018-07-01.
*/
public class CalculatorTest {
@Test
public void evaluatesExpression() {
Calculator calculator = new Calculator();
int sum = calculator.evaluate("1+2+3");
assertEquals(6, sum);
}
}
- 运行测试类的测试方法,方式如下图:
点击运行,测试通过如下图:
- 运行测试类所有的测试方法,方式如下图:
使用断言
该断言方法具有重载特性,具有多种类型的断言判断。
两个断言类,提供方法有一定差异,可根据实际情况进行选择;
import static junit.framework.TestCase.assertEquals;
import static org.junit.Assert.*;
执行过程控制
四个注解@Before、@BeforeClass、@After、@AfterClass
,具体说明见注解。
package com.lczyfz.junit;
import org.junit.*;
import static junit.framework.TestCase.assertEquals;
/**
* Created by maple on 2018-07-01.
*/
public class CalculatorTest {
//每次测试方法执行前,该方法执行一次
@Before
public void before(){
System.out.println("do before");
}
//仅执行一次,在测试一开始执行
@BeforeClass
public static void beforeClass(){
System.out.println("do beforeClass");
}
@Test
public void evaluatesExpression() {
System.out.println("do evaluatesExpression");
Calculator calculator = new Calculator();
int sum = calculator.evaluate("1+2+3");
assertEquals(6, sum);
}
@Test
public void evaluatesExpressionOther() {
System.out.println("do evaluatesExpressionOther");
Calculator calculator = new Calculator();
int sum = calculator.evaluate("1+2+3+4");
assertEquals(10, sum);
}
//每次测试方法执行结束时,该方法执行一次
@After
public void after(){
System.out.println("do after");
}
//仅执行一次,在测试结束执行
@AfterClass
public static void afterClass(){
System.out.println("do afterClass");
}
}
网友评论