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 EE 简介
Java EE 简介 Java EE 基本架构 JavaEE 的诞生是为了解决传统 C/S 架构的弊端:客户端臃肿庞大,扩展性差等弊端. JavaEE 将传统的两层结构细分为了四层. 这四层分别是:C ...
- java程序包不存在_第一章 Java语言简介
Java语言简介 Java之父 James Gosling(詹姆斯·高斯林) 正式诞生时间 1995年,已有二十多年历史 三大方向 JavaSE(桌面版,基础需重点掌握) JavaME(移动版,现在基 ...
- (一:NIO系列)JAVA NIO 简介
出处:JAVA NIO 简介 Java 中 New I/O类库 是由 Java 1.4 引进的异步 IO.由于之前老的I/O类库是阻塞I/O,New I/O类库的目标就是要让Java支持非阻塞I/O, ...
- ibm java_IBM i 上Java 虚拟机简介
Abstract IBM i 上Java 虚拟机简介 Body Java在IT业界有多流行?google上搜索一下java, 结果一目了然(今天早上我搜索到的记录数是840000000条).Java之 ...
- Java异常(一) Java异常简介及其架构
概要 本章对Java中的异常进行介绍.内容包括: Java异常简介 Java异常框架 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544168.htm ...
- Java:计算机编程语言Java的简介、编程环境/工具、如何学习Java之详细攻略
Java:计算机编程语言Java的简介.编程环境/工具.如何学习Java之详细攻略 目录 Java的简介 1.Java的工作原理--基于Eclipse等编程Java语言→定义Java类→Java虚拟机 ...
- OpenCV Java开发简介
OpenCV Java开发简介 OpenCV Java开发简介 我们将在本指南中做什么 获得适当的OpenCV 下载 构建 Java示例与Ant Java和Scala的SBT项目 运行SBT样本 Op ...
- JDK14中的java tools简介
文章目录 故事发生了 java tools简介 jaotc jar jarsigner java javac javadoc javap jcmd jconsole jdb jdeprscan jde ...
- JAVA NIO 简介 (netty源码死磕1.1)
[基础篇]netty 源码死磕1.1: JAVA NIO简介 1. JAVA NIO简介 Java 中 New I/O类库 是由 Java 1.4 引进的异步 IO.由于之前老的I/O类库是阻塞I/ ...
- java 测试用例核心代码_核心Java测验
java 测试用例核心代码 Welcome to Core Java Quiz. Java is an object-oriented programming language. 欢迎来到Core J ...
最新文章
- Git 初次学习笔记
- 清华大学梁宸计算机系,2015年广东高考高等学校自主招生录取考生名单公示(2)...
- 晋升新一线的合肥,跨平台的.NET氛围究竟如何?
- Java IO: 并发IO
- [Leetcode][JAVA][第1111题][栈思想]
- vs2010中引入boost库
- 鸿蒙WLAN模组联网+解决在Visual Studio Code不能更改Linux文件的问题
- 汇编语言第二课作业2.3
- python类详解_python面向对象编程:python类和实例讲解
- Microsoft VS又要级了
- SQL0286N 找不到页大小至少为 8192、许可使用授权标识 db2inst 的缺省表空间。...
- Object-C 函数参数语法
- Mysql(2)事务
- 计算机处理器的hz越大越好,cpu主频越高越好吗,教您CPU处理器主频率越高越好吗...
- 使用scrapy爬取北京公交
- 【已解决】win10修改用户名,禁用Administrator后,若要继续,请输入管理员用户和密码,只有否
- [HAOI2014] 贴海报
- 笔记本连接显示器没有声音解决方法
- 初试傲游浏览器/Maxthon3,4大惊喜,1点遗憾
- Dos攻击与DDos攻击原理与区别,怎么防护?
热门文章
- Docker从理论到实践(七)------Docker数据管理
- [Luogu] 程序自动分析
- 【Sprint3冲刺之前】TD学生助手——alpha版发布
- Android 使用Fragment,ViewPagerIndicator 制作csdn app主要框架
- linux 安装Java
- VAD(Voice Activity Detection)算法详解
- hbase 安装_如何搭建一个HBase集群
- arm linux vlc移值,vlc-3.0.8在飞凌开发板i.mx6q上移植
- 2020年施工晴雨表电子版_2020年建筑施工特种作业人员培训通知
- opencv提取图像的缺陷并用最小矩形框出来