Java测试用例简介
最近需要向组内其他成员普及一下关于Java测试用例的相关知识,特在此进行一下简单的学习和总结。
JUnit简介
JUnit是一个开源的Java单元测试框架,JUnit4对原有的JUnit框架进行了大幅度的改进,主要目标便是利用了Java中的Annotation,来代替以前必须要继承AbstractTestCase,以及要测试的方法名称必须test为前缀。
JUnit4中提供了三个Annotation,用来控制整个测试的生命周期:
- @Before
相当与测试用例的初始化工作,在执行每个测试用例方法时,都会先执行该方法。
- @After
测试用例的清理工作在该方法中编写,在每个方法执行完成后,都会进行清理。
@Before和@After可以保证一些测试用例中的资源在这些方法执行,不会受到@Test方法执行顺序的影响。
- @Test
这个是实际的测试方法,会根据该方法中的断言语句(Assert)来进行测试用例的执行结果显示输出。
在@Test中,还有一些属性,这些属性都是非常有用的:
- expect=xxxx.class(extends Throwable)
如果我们在测试方法中能够预料到一些错误的发生,就使用该方法进行处理。有时候,一个函数抛出异常也许是你希望得到的结果。
- timeout=xxxx(一个毫秒值)
如果测试方法没有在指定的timeout时间内执行完成,该测试失败,这对于单元测试效率非常有帮助。
如果正在实践测试驱动开发,@Ignore可以暂时忽略掉一些已经定义但并没有实现的方法。
JUnit中有参数化测试的概念,只需要写一个测试函数,把若干种情况当成是参数传进去,进行测试即可。
类似下面的代码,就可以参数化的方式进行批量测试工作:
@RunWith(Parameterized.class)
public class BelongToRegionFunctionTestCase { private BelongToRegionFunction function; private boolean expected;
private int regionId;
private int parentRegionId; @Before
public void setUp() {
function = new BelongToRegionFunction();
} @After
public void tearDown() {
function = null;
} @Parameterized.Parameters
public static Collection prepareData() {
return Arrays.asList(
new Object[]{true, 15, 8},
new Object[]{true, 105, 8},
new Object[]{false, 2, 8}
);
} public BelongToRegionFunctionTestCase(boolean expected, int regionId, int parentRegionId) {
this.expected = expected;
this.regionId = regionId;
this.parentRegionId = parentRegionId;
} @Test
public void testOldRegion() throws IOException {
String filePath = this.getClass().getClassLoader().getResource("Region-000000000000000000000008-top100-new").getFile();
Assert.assertEquals(expected, function.evaluate(regionId,parentRegionId, filePath));
} @Test
public void testNewRegion() throws IOException {
String filePath = this.getClass().getClassLoader().getResource("Region-000000000000000000000008-top100-top100-top100-merge").getFile();
Assert.assertEquals(expected, function.evaluate(regionId,parentRegionId, filePath));
} }
Maven中运行JUnit
Maven本身不是一个单元测试框架,只是在构建执行到特定生命周期的时候,通过插件来执行JUnit的测试用例。这个插件就是maven-surefire-plugin,也成为Test Runner。
默认情况下,maven-surefire-plugin会执行测试源代码路径中的所有TestCase,路径为:src/test/java。maven中的test阶段是默认包含在一些阶段之前,也就是说package和install阶段都会默认先执行test,如果想要在package前跳过这个阶段,可以使用类似下面的命令:
maven package –DskipTests
如果不仅想要跳过测试运行,还需要跳过测试编译:
maven package –Dmaven.test.skip=true
如果在运行时某个测试用例执行失败,想要重新执行一次的时候,没有必要将所有的测试用例都跑一遍,仅需要执行部分的测试用例,maven-surefire-plugin提供了一个test参数可以让maven用户能够在命令行指定要运行的测试用例,可以使用通配符,以及加入多个Test类:
maven test –Dtest=Class*Test,Class2*Test
在idea中可以设置工程的Test Resources Folder,这样就可以在程序中用ClassLoader的getResource得到对应资源的路径和输入流,建议不要将测试使用的资源强行防至到对应的开发资源包中。
maven中可以定义测试资源的路径:
<build>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
</build>
Java测试用例简介的更多相关文章
- Java SE 简介 & 环境变量的配置
Java SE 简介 & 环境变量的配置 一.Java 技术的三个方向 Java 技术分为三个方向 javaSE( Java Platform Standard Edition 标准版)用来开 ...
- Java异常(一) Java异常简介及其架构
概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544168.html ...
- 一、Android NDK编程预备之Java jni简介
转自: http://www.eoeandroid.com/thread-264384-1-1.html 游戏开发 视频教程 博客 淘帖 论坛›eoe·Android应用开发区›Androi ...
- Java RMI 简介及其优劣势总结
今天,帮别人看UDAS配置问题时,看到采用的是RMI方式的调用,如:rmi://10.20.134.140:2299/DataServer,而且这个端口是被直接硬编码在UDAS的代码中的.既然看到了, ...
- Java多线程简介
Java多线程简介 Java中内置了对多线程的支持,让多线程的开发方便很多,但同时也带来了另外的复杂,线程间的交互以及很多的不确定性让多线程又显得很复杂.在此只是针对Java中多线程的基础做些说明,有 ...
- Java异常简介、异常捕获还是上抛总结
概要 本章对Java中的异常进行介绍.内容包括:1.Java异常简介2.Java异常框架 一.Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制. Java异常机制可以使程序 ...
- Java Script 简介
Java Script 简介 JavaScript 是世界上最流行的编程语言. 这门语言可用于 HTML 和 web,更可广泛用于服务器.PC.笔记本电脑.平板电脑和智能手机等设备.JavaScrip ...
- Java NIO系列教程(一)java NIO简介
这个系列的文章,我们开始玩一玩IO方面的知识,对于IO和NIO,我们经常会接触到,了解他们的基本内容,对于我们的工作会有特别大的帮助.这篇博文我们仅仅是介绍IO和NIO的基本概念,以及一些关键词. 基 ...
- Java异常(一)Java异常简介及其框架
Java异常(一)Java异常简介及其框架 概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机 ...
随机推荐
- progressbar进度条组件
Progressbar 进度条组件 通过$.fn.progressbar.fn.defaults重写默认的defaults进度条(progressbar)提供了一种显示长时间操作进度的反馈.进度可被更 ...
- windows配置redis(转)
此文章全部是转的,我之前是woidows启动redis无法加载配置找到的:原文链接:http://www.cnblogs.com/smileyearn/articles/4749746.html 在w ...
- vue.js 源代码学习笔记 ----- 工具方法 debug
import config from '../config' import { noop } from 'shared/util' let warn = noop let tip = noop let ...
- 【中文同义词近义词】词向量 vs 同义词近义词库
方案一:利用预训练好的词向量模型 优点: (1)能把词进行语义上的向量化(2)能得到词与词的相似度 缺点: (1)词向量的效果和语料库的大小和质量有较大的关系(2)用most_similar() 得到 ...
- 【pluginShare】依赖JQuery的弹出层封装
目前正在做的项目,老大说打算一点点做成bootstrap那样,然后开源... 所以,趁现在不忙,先封装一些小插件,然后慢慢完善,扩大,开源... 因此博客也多了一个新的模块------分享 第一弹:a ...
- 机器学习中的ground truth
ground truth就是参考标准,一般用来做误差量化.比方说要根据历史数据预测某一时间的温度,ground truth就是那个时间的真实温度.error就是(predicted temperatu ...
- 零基础学习hadoop到上手工作线路指导初级篇:hive及mapreduce
此篇是在零基础学习hadoop到上手工作线路指导(初级篇)的基础,一个继续总结.五一假期:在写点内容,也算是总结.上面我们会了基本的编程,我们需要对hadoop有一个更深的理解:hadoop分为h ...
- 常用的SQL语句大全
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...
- 基于C#的UDP协议的同步实现
一.摘要 总结基于C#的UDP协议的同步通信. 二.实验平台 Visual Studio 2010 三.实验原理 UDP传输协议同TCP传输协议的区别可查阅相关文档,此处不再赘述. 四.实例 4.1 ...
- http接口测试工具
2016-08-28 19:24:55 以全国天气预报为例 https://www.juhe.cn/docs/api/id/39/aid/132 (一)火狐的HttpRequester 在URL中填 ...