最近需要向组内其他成员普及一下关于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测试用例简介相关推荐

  1. Java EE 简介

    Java EE 简介 Java EE 基本架构 JavaEE 的诞生是为了解决传统 C/S 架构的弊端:客户端臃肿庞大,扩展性差等弊端. JavaEE 将传统的两层结构细分为了四层. 这四层分别是:C ...

  2. java程序包不存在_第一章 Java语言简介

    Java语言简介 Java之父 James Gosling(詹姆斯·高斯林) 正式诞生时间 1995年,已有二十多年历史 三大方向 JavaSE(桌面版,基础需重点掌握) JavaME(移动版,现在基 ...

  3. (一:NIO系列)JAVA NIO 简介

    出处:JAVA NIO 简介 Java 中 New I/O类库 是由 Java 1.4 引进的异步 IO.由于之前老的I/O类库是阻塞I/O,New I/O类库的目标就是要让Java支持非阻塞I/O, ...

  4. ibm java_IBM i 上Java 虚拟机简介

    Abstract IBM i 上Java 虚拟机简介 Body Java在IT业界有多流行?google上搜索一下java, 结果一目了然(今天早上我搜索到的记录数是840000000条).Java之 ...

  5. Java异常(一) Java异常简介及其架构

    概要 本章对Java中的异常进行介绍.内容包括: Java异常简介 Java异常框架 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544168.htm ...

  6. Java:计算机编程语言Java的简介、编程环境/工具、如何学习Java之详细攻略

    Java:计算机编程语言Java的简介.编程环境/工具.如何学习Java之详细攻略 目录 Java的简介 1.Java的工作原理--基于Eclipse等编程Java语言→定义Java类→Java虚拟机 ...

  7. OpenCV Java开发简介

    OpenCV Java开发简介 OpenCV Java开发简介 我们将在本指南中做什么 获得适当的OpenCV 下载 构建 Java示例与Ant Java和Scala的SBT项目 运行SBT样本 Op ...

  8. JDK14中的java tools简介

    文章目录 故事发生了 java tools简介 jaotc jar jarsigner java javac javadoc javap jcmd jconsole jdb jdeprscan jde ...

  9. JAVA NIO 简介 (netty源码死磕1.1)

    [基础篇]netty 源码死磕1.1:  JAVA NIO简介 1. JAVA NIO简介 Java 中 New I/O类库 是由 Java 1.4 引进的异步 IO.由于之前老的I/O类库是阻塞I/ ...

  10. java 测试用例核心代码_核心Java测验

    java 测试用例核心代码 Welcome to Core Java Quiz. Java is an object-oriented programming language. 欢迎来到Core J ...

最新文章

  1. 独家 | 快速掌握spacy在python中进行自然语言处理(附代码链接)
  2. Codeforces Round #316 (Div. 2) D. Tree Requests dfs序
  3. sqlserver2008 安装时需要重启的解决办法
  4. 一文玩转 EhCache 缓存框架!
  5. html绝对定位怎么页面居中,html – 如何将绝对定位的元素居中?
  6. k8s核心技术-Controller(statefulSet)_部署有状态应用---K8S_Google工作笔记0033
  7. 13.docker exec
  8. 云数据库MySQL的发展史
  9. Dell(戴尔)Alienware(外星人)Alienware Command Center(AWCC)更新失败解决方案(究极版)
  10. ffmpeg java_Java 调用 FFMPEG 的坑人之处
  11. css中的flow-root属性
  12. 【数模之数据分析-1】
  13. VBS教程--摘自百度百科
  14. html高难度拼图,张馨月婚后生活太悠闲,宅家挑战高难度拼图
  15. word打开doc文件提示运行时错误‘4605‘
  16. 使用visual studio 2019 创建简单的MFC窗口「使用C++」
  17. 白加黑加载方式_利用白加黑原理 绕过杀软主动防御
  18. 《Programming in Lua 3》读书笔记(一)
  19. Android学习笔记——Android 签名机制详解
  20. Java图书管理系统,java课程实习

热门文章

  1. c++ string 删除第一个字符_字符串操作的全面总结
  2. Java虚拟机中的堆(Heap)
  3. [CQOI 2018]交错序列
  4. django 搭建上传文件系统——细说Form Validation(二)
  5. hdu4027线段树
  6. 在树莓派2上安装 Windows 10
  7. HDU1010【走迷宫】Tempter of the Bone-------2015年1月26日
  8. Binary Tree Paths(leetcode 257)
  9. pb 打印dw footer 不打印_喷墨打印机怎样加墨 打印机加墨方法及不识别墨的处理方式...
  10. 阿里云盘内测申请_阿里云网盘开放内测申请,网盘行业又成香饽饽了?