为什么我们要写单元测试用例?
注解名称
|
注解描述
|
@Test
|
所有希望被运行的测试方法都应该使用该注解,
次注解来告诉junit框架,当前方法是需要被执行的测试用例。
|
@Test
(expected=NullPointerException.class)
|
期待抛出指定异常才会通过,注解中定义的异常可以是
父类异常,方法中抛的异常只要是其子类就可以。
如果没有此注解还想要测试抛异常的情况就必须要
自己手动写try-catch,这样就麻烦了。
|
@Test(timeout=5000)
|
执行超出时间无法通过(单位毫秒),
对性能&执行时间比较苛刻的测试方法可以使用此注解。
|
@Ignore("暂不执行,因为xxxx,skipped")
|
忽略当前测试用例,需要写在@Test上面。
有些用例没写完或者不想在自动化跑测试用例的时候执行,
那我们就需要ignore这些用例。
|
@Before
|
使用@Before来修饰单个非测试方法,
其他每个测试方法执行之前都要执行@Before修饰的方法。
可以用来创建一些测试数据&执行一些sql等初始化操作。
无论用例成功or失败都会去执行@Before修饰的方法。
|
@After
|
使用@After来修饰单个非测试方法,
其他每个测试方法执行之后都要执行@After修饰的方法。
可以用来关闭&回收&清理一些资源的操作。
无论用例成功or失败都会去执行@After修饰的方法。
|
@BeforeClass&@AfterClass
|
使用@BeforeClass来修饰单个非测试方法,
使用@AfterClass来修饰单个非测试方法。
所有测试方法执行之前要执行@BeforeClass修饰的方法。
所有测试方法执行完毕之后要执行@AfterClass修饰的方法。
类比一下,@Before与@After会执行多次,
测试类中有多少个测试方法就会执行多少次,
而@BeforeClass与@AfterClass只会执行一次。
|
@FixMethodOrder
(MethodSorters.NAME_ASCENDING)
|
junit测试用例的执行默认是没有顺序的,
使用此标签可以设定执行顺序,此处为按文字顺序执行,
修饰在类上。
|
断言方法
|
描述
|
Assert.assertEquals(a,b);
|
判断a与b是否相等,如果相等则表示测试成功。
如果不相等则表示测试失败并抛出Error。
|
Assert.assertNotEquals(a,b);
|
判断a与b是否不相等,如果不相等则表示测试成功。
如果相等则表示测试失败并抛出Error。
|
Assert.assertTrue(a);
|
判断a是否为true,如果为true则表示测试成功。
如果a不为true则表示测试失败并抛出Error。
|
Assert.assertFalse(a);
|
判断a是否为false,如果为false则表示测试成功。
如果a不为false则表示测试失败并抛出Error。
|
Assert.assertNull(a);
|
判断a是否为null,如果为null则表示测试成功。
如果a不为null则表示测试失败并抛出Error。
|
Assert.assertNotNull(a);
|
判断a是否为非null,如果为非null则表示测试成功。
如果a不为非null则表示测试失败并抛出Error。
|
Assert.assertFail();
|
这个标签的使用是有技巧的,
如果测试方法中写的代码全部被成功执行并走到了最后,
但期待的是走到最后就算是测试失败,测试成功则不应该走到最后,
那么就要使用到此标签。
|
Assert.assertArrayEquals(a,b);
|
判断数组a与数组b是否相等,如果相等则表示测试成功。
如果不相等则表示测试失败并抛出Error。
|
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/app-config.xml")
@Transactional // 事务自动回滚
public class AATest {@ResourceIndexService indexService;/*** Title: 注册测试用例正确.<br>* Description: registerTest<br>* CreateDate: 2017年6月19日 下午4:36:00<br>** @category registerTest*/@Testpublic void studentRegisterTrueTest() throws Exception {final UserRegisterValidationForm paramForm = new UserRegisterValidationForm();paramForm.setPhone("1706868699");paramForm.setPwd(SHAUtil.encode("caowei123"));final CommonJsonObject<User> json = indexService.studentRegister(paramForm, null);Assert.assertTrue(json.getCode() == 200);}
import org.junit.runner.RunWith;
import org.junit.runners.Suite;@RunWith(Suite.class)
@Suite.SuiteClasses({ATest.class, BTest.class})
public class AllTests {}
@RunWith(Parameterized.class)
public class Junit4Test2 {private int param;private int result;public Junit4Test2(int param, int result) {this.param = param;this.result = result;}@Parameterspublic static Collection data() {return Arrays.asList(new Object[][] { { 1, 2 }, { 2, 3 }, { 4, 5 }, });}@Test()public void test1() {//使用参数化测试Assert.assertEquals(result, JunitDemo.demo(param));}@Test()public void test2() {//未使用参数化测试Assert.assertEquals(2, JunitDemo.demo(1));}
}
为什么我们要写单元测试用例?相关推荐
- Python怎么去写单元测试用例去测试hello world呢
逛着博客园,看到乙醇大佬的一篇随笔 https://www.cnblogs.com/nbkhic/p/9370446.html,于是就在想怎么测试这句hello world print('hello ...
- 用Junit写单元测试用例
要使用JUnit框架,首先要引入import org.junit.*;其中包括大多数可能是用到的库函数 还有一个经常和junit一起使用的库函数,import org.junit.Assert.*; ...
- 单元测试用例_前端单元测试实践
一说到单元测试,可能对于业务一线同学来说,心理立马就会无形中有一种压迫感,心想 "业务都做不完了,写个球的单元测试,先保证功能完备,赶紧上线才是王道",这句话的核心是以业务为重,没 ...
- java 单元测试 异步_Java/Android编写异步的单元测试用例
不写单元测试用例的程序员不是一个好CTO!!! 注:以下内容编码环境为AndroidStudio_2.4Preview6,测试框架 JUnit4.12 今天在研究 MVP_RxJava2_Retrof ...
- 8大征兆判断你的单元测试用例写得如何
300G全套最新软测视频教程分享 链接:https://pan.baidu.com/s/17jkyGn-Wm-zC6QQLkWjrsw 提取码:o94n 如果您从事软件开发很长一段时间,那么您很容易理 ...
- Java编程技巧之单元测试用例编写流程
简介: 立足于"如何来编写单元测试用例",让大家"有章可循",快速编写出单元测试用例. 作者 | 常意 来源 | 阿里技术公众号 温馨提示:本文较长,同学们可收 ...
- JUnit单元测试用例
2019独角兽企业重金招聘Python工程师标准>>> 注意在编写测试用例的时候,要保持测试用例的独立性 一个原则,每条单元测试用例都必须独立运行,不能依靠其他测试用例,或者不能按照 ...
- ultraedit 运行的是试用模式_Wings面向企业级的单元测试用例自动编码引擎
点击上方"蓝字"关注我们吧! 2020年7月30日,星云测试在TiD2020质量竞争力大会正式发布最新产品"Wings-企业级单元用例自动编码引擎".这是国际首 ...
- Angular Jasmine单元测试用例spec.ts的加载逻辑
installedModules里存放了很多已经加载的module: req就是我应用的test.ts里硬编码的单元测试用例文件: 执行id为6Eaj的module: 更多Jerry的原创文章,尽在: ...
- 软件项目 单元测试用例,行政培训考核系统项目单元测试用例.doc
卷号卷内编号密级 [行政培训考核系统软件] DYX01-01-2010 项目单元测试用例 Version 2.0 作者: 何晶 日期版本说明作者2010-08-020.1修改"后台系统设置& ...
最新文章
- samba网络服务的搭建和配置
- 网络运维现状及发展趋势分析
- 一致性 Hash 算法学习(分布式或均衡算法)
- linux查看 idt日志,实现RCP的日志管理
- 思科设备snmp配置。
- Ignite中的机器学习介绍
- Golang slice 的底层实现
- EJB+JSF开发示例(附源码)
- gerrit配置replication插件
- Struts2(接受表单参数)请求数据自动封装和数据类型转换
- Java查看class的JVM,指令集文件--javap -c ClassName
- python list去重_基础知识详解:python( list,set,dict)大规模查找效率对比
- python发送以太网报文_python之分解以太帧
- kubernetes 学习记录-two
- Unity3D官方案例--太空射击游戏总结
- c++ zlib加密压缩文件详细介绍与代码演示
- 红米10x android11,红米10X 5G版刷机包MIUI11
- 新闻 | Mapbox 牵手阿里,飞猪旅行上线六大城市地图功能
- python高级算法与数据结构:“你如何压缩一部英文著作”,一道来自大厂的真实面试题
- autohotkey入门_AutoHotkey-入门
热门文章
- 【数据分析】数据分析达人赛3:汽车产品聚类分析
- 勒索病毒“永恒之蓝”变种再来,该如何关闭445端口(收藏)
- Big Sur MacOS高清动态壁纸
- 药物用法拉丁文缩写词
- PCS7 入门指南 v9.0 SP3 v9.1 中文版 学习资料 (官方公开可用资料)
- c4d阿诺德渲染器支持a卡吗_C4D常用的4大主流渲染器如何选择与比较 (OC/RS/VR/阿诺德)?...
- 年终盘点丨2021边缘计算大事记
- 基于html5的城市公交查询系统,城市公交在线查询系统的设计与实现
- [MATLAB]基本介绍
- 编程开发软件工具下载