junit入门实例
1 junit测试用例代码
package junitTest;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
/**
* @ClassName TestCase
* @Description junit测试用例演示
* @date 2014年9月11日 上午9:57:45
*
*/
public class TestCase {
// @Test
// public void test() {
// fail("Not yet implemented");
// }
/**
*
* @Title setUpBeforeClass
* @Description 针对所有测试,只执行一次,在该class执行前执行,且必须为static void
* @param
* @return
* @throws
*/
@BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("in BeforeClass================");
}
/**
*
* @Title tearDownAfterClass
* @Description 针对所有测试,只执行一次,在该class执行完后执行,且必须为static void
* @param
* @return
* @throws
*/
@AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("in AfterClass=================");
}
/**
*
* @Title before
* @Description 初始化测试方法,每个测试方法都需要调用一次
* @param
* @return
* @throws
*/
@Before
public void before() {
System.out.println("in Before");
}
/**
*
* @Title after
* @Description 测试方法执行完后释放资源,每个测试方法都需要调用一次
* @param
* @return
* @throws
*/
@After
public void after() {
System.out.println("in After");
}
@Test(timeout = 10000)
public void testadd() {
JDemo a = new JDemo();
assertEquals(6, a.add(3, 3));
System.out.println("in Test ----Add");
}
@Test
public void testdivision() {
JDemo a = new JDemo();
assertEquals(3, a.division(6, 2));
System.out.println("in Test ----Division");
}
@Ignore
@Test
public void test_ignore() {
JDemo a = new JDemo();
assertEquals(6, a.add(1, 5));
System.out.println("in test_ignore");
}
@Test
public void test_fail() {
fail();
}
}
/**
*
* @ClassName JDemo
* @Description 测试类
* @date 2014年9月11日 上午10:15:15
*
*/
class JDemo extends Thread {
int result;
public int add(int a, int b) {
try {
sleep(1000);
result = a + b;
} catch (InterruptedException e) {
System.out.println("add error");
}
return result;
}
public int division(int a, int b) {
return result = a / b;
}
}
2 java执行结果
in BeforeClass================ in Before in Test ----Division in After in Before in After in Before in Test ----Add in After in AfterClass=================
3 junit执行结果
4 执行顺序
一个测试类单元测试的执行顺序为:
@BeforeClass –> @Before –> @Test –> @After –> @AfterClass
每一个测试方法的调用顺序为:
@Before –> @Test –> @After
5 断言核心方法
assertArrayEquals(expecteds, actuals) |
查看两个数组是否相等。 |
---|---|
assertEquals(expected, actual) |
查看两个对象是否相等。类似于字符串比较使用的equals()方法 |
assertNotEquals(first, second) |
查看两个对象是否不相等。 |
assertNull(object) |
查看对象是否为空。 |
assertNotNull(object) |
查看对象是否不为空。 |
assertSame(expected, actual) |
查看两个对象的引用是否相等。类似于使用“==”比较两个对象 |
assertNotSame(unexpected, actual) |
查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象 |
assertTrue(condition) |
查看运行结果是否为true。 |
assertFalse(condition) |
查看运行结果是否为false。 |
assertThat(actual, matcher) |
查看实际值是否满足指定的条件 |
fail() |
让测试失败 |
6 junit方法声明
@Before |
初始化方法 |
---|---|
@After |
释放资源 |
@Test |
测试方法,在这里可以测试期望异常和超时时间 |
@Ignore |
忽略的测试方法 |
@BeforeClass |
针对所有测试,只执行一次,且必须为static void |
@AfterClass |
针对所有测试,只执行一次,且必须为static void |
@RunWith |
指定测试类使用某个运行器 |
@Parameters |
指定测试类的测试数据集合 |
@Rule |
允许灵活添加或重新定义测试类中的每个测试方法的行为 |
@FixMethodOrder |
指定测试方法的执行顺序 |
参考文件:http://blog.csdn.net/wangpeng047/article/details/9628449
- 今天,微信紧急发布小程序最强入口!这3项新能力堪称年度豪礼!
- Python基础知识梳理-第01部分
- 卷积神经网络之卷积操作
- Silverlight体积优化
- 江湖秘笈:说烦了破解、渗透等,不如大家一起聊聊硬盘加密?
- Nodejs学习笔记(十三)— PM2
- 十分钟带你了解服务化框架
- 十分钟带你了解服务化框架
- WCF技术剖析之十七:消息(Message)详解(上篇)
- 微信年底重磅更新,这次小程序才是重头戏!
- 《EnterLib PIAB深入剖析》系列博文汇总
- Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)
- 大牛教你使用7种卷积神经网络进行物体检测!
- Enterprise Library深入解析与灵活应用(3):倘若将Unity、PIAB、Exception Handling引入MVP模式.. .. ..
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- spring的缓存(cache)-(缓存穿透、缓存击穿、缓存雪崩、热点数据)
- spring-配置文件外化
- 腾讯地图获取全国行政区划检索列表Demo
- iOS开发~UIView layer 之前的关系
- iOS进阶_KVC(&KVC赋值取值过程分析&KVC自定义&异常处理)
- python 学习笔记(8)——python绝对路径相对路径
- 设计模式-访问者模式
- 设计模式-空对象模式
- 设计模式-观察者模式
- Selenium自动化最佳实践技巧(上)
- 如何同时压测创建和删除接口
- 为什么测试覆盖率如此重要
- 5行Python就能爬取 3000+ 上市公司的信息?
- iOS 代码染色原理及技术实践
- 微信小程序【常用组件及自定义组件】