三分钟学会 Java 单元测试
前言:
此篇文章使用 Junit 4.0, 希望给无任何单元测试经验的开发者, 能在最短的时间内, 开展单元测试的工作◦
本文:
学习 Junit 的测试框架是件非常容易的事,只需了解下列三件事:
1) 测试方法的宣告◦
2) Junit 的生命周期◦
3) 断言的方法◦
I. 测试方法的宣告:
测试方法的宣告需遵循下列的规则:
a) 使用 @Test 将方法宣告为测试方法◦
b) 测试方法需为 public◦以确保可被 Junit 框架所调用◦
c) 测试方法需为 void 且无参数◦以确保各测试方法的独立性◦
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class ExampleTest {
@Test
publicvoid thisIsATestMethod(){
assertEquals(5, 2 + 3);
}
@Test
public void thisIsAnotherTestMethod() {
WorldOrder newWorldOrder = new WorldOrder();
assertFalse(newWorldOrder.isComing());
}
}
II. Junit 的生命周期:
Junit 的生命周期有下列主要的步骤:
Step 1) Junit 框架生成测试类; public class ExampleTest; 的对象◦
Step 2) Junit 框架调用测试对象中的 @Before 方法◦ 以设定测试环境, 如:生成被测对象; DefaultController( ); 或生成测试数据对象; SampleRequest()◦
Step 3) Junit 框架调用测试对象中的任一测试方法;
public void testProcessRequest() 或 public void testAddHandler()◦
因各测试方法均为独立, 所以Junit 框架先调用那个测试方法, 并不会影响各测试方法的测试结果◦
Step 4) Junit 框架调用测试对象中的 @After 方法◦ 以清除测试环境◦
针对下一个测试方法, Junit 重复相同的生命周期 (步骤)◦
public class ExampleTest {
@Before
public void setLocaleForTests() {
controller = new DefaultController();
request = new SampleRequest();
handler = new SampleHandler();
}
@Test
public void testProcessRequest() {
Response response = controller.processRequest( request );
assertNotNull( "Must not return a null response", response );
}
@Test
public void testAddHandler() {
RequestHandler handler2 = controller.getHandler( request );
assertSame( "Controller.getHandler must return the samplehandler", handler2, handler );
}
@After
}
III. 断言的方法:
JUnit assertions |
Description |
---|---|
assertEquals |
Asserts that two objects (or primitives) are equal |
assertArrayEquals |
Asserts that two arrays have the same items |
assertTrue |
Asserts that a statement is true |
assertFalse |
Asserts that a statement is false |
assertNull |
Asserts that an object reference is null |
assertNotNull |
Asserts that an object reference is not null |
assertSame |
Asserts that two object references point to the same instance |
结论:
Junit 的框架非常的容易使用◦ 然而, 如何有效率的开发 Junit 单元测试代码, 对敏捷开发而言, 绝对不是一件容易的事◦
后续将陆续探讨这方面的议题◦
- Hadoop(十)Hadoop IO之数据完整性
- Tomcat 端口号修改
- Mac OSX网络诊断命令
- spring cloud 学习(5) - config server
- Java魔法堂:解读基于Type Erasure的泛型
- spring cloud 学习(3) - feign入门
- Java集合源码分析(四)HashMap
- Java魔法堂:解读基于Type Erasure的泛型
- 显示mybatis的执行的sql
- spring cloud 学习(2) - eureka server注册中心高可用及安全认证
- mybatis在xml文件中处理大于号小于号的方法
- kafka集群部署
- Hadoop(九)Hadoop IO之Compression和Codecs
- 安卓第二夜 有趣的架构
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 容器化 FRP 使用方案
- 任意图像转素描:Python分分钟实现
- Python数据科学:相关分析
- Python数据科学:正态分布与t检验
- Python数据科学:方差分析
- 推荐3个开源的快速开发平台,前后端都有,项目经验又有着落了!
- Python数据科学:卡方检验
- Java 中使用 Redis
- Python数据科学:线性回归
- 人生苦短,我用k8s--------------单节点二进制部署
- 人生苦短,我用k8s--------------k8s集群二进制部署
- 从零开始学习 JD Chain(四)-使用穿透式检索-Release
- 用Python清除文件夹中的重复视频
- Python数据科学:线性回归诊断
- 用Python自动化生成倒计时图片