JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。
先简单解释一下什么是Annotation,这个单词一般是翻译成元数据。元数据是什么?元数据就是描述数据的数据。也就是说,这个东西在Java里面可以用来和public、static等关键字一样来修饰类名、方法名、变量名。修饰的作用描述这个数据是做什么用的,差不多和public描述这个数据是公有的一样。想具体了解可以看Core Java2。废话不多说了,直接进入正题。
我们先看一下在JUnit 3中我们是怎样写一个单元测试的。比如下面一个类:
public class AddOperation {
public int add(int x,int y){
return x+y;
}
}
我们要测试add这个方法,我们写单元测试得这么写:
import junit.framework.TestCase;
import static org.junit.Assert.*;
public class AddOperationTest extends TestCase{
public void setUp() throws Exception {
}
public void tearDown() throws Exception {
}
public void testAdd() {
System.out.println(\"add\");
int x = 0;
int y = 0;
AddOperation instance = new AddOperation();
int expResult = 0;
int result = instance.add(x, y);
assertEquals(expResult, result);
}
}
可以看到上面的类使用了JDK5中的静态导入,这个相对来说就很简单,只要在import关键字后面加上static关键字,就可以把后面的类的static的变量和方法导入到这个类中,调用的时候和调用自己的方法没有任何区别。
我们可以看到上面那个单元测试有一些比较霸道的地方,表现在:
1.单元测试类必须继承自TestCase。
2.要测试的方法必须以test开头。
如果上面那个单元测试在JUnit 4中写就不会这么复杂。代码如下:
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author bean
*/
public class AddOperationTest extends TestCase{
public AddOperationTest() {
}
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void add() {
System.out.println(\"add\");
int x = 0;
int y = 0;
AddOperation instance = new AddOperation();
int expResult = 0;
int result = instance.add(x, y);
assertEquals(expResult, result);
}
}
我们可以看到,采用Annotation的JUnit已经不会霸道的要求你必须继承自TestCase了,而且测试方法也不必以test开头了,只要以@Test元数据来描述即可。
从上面的例子可以看到在JUnit 4中还引入了一些其他的元数据,下面一一介绍:
@Before:
使用了该元数据的方法在每个测试方法执行之前都要执行一次。
@After:
使用了该元数据的方法在每个测试方法执行之后要执行一次。
注意:@Before和@After标示的方法只能各有一个。这个相当于取代了JUnit以前版本中的setUp和tearDown方法,当然你还可以继续叫这个名字,不过JUnit不会霸道的要求你这么做了。
@Test(expected=*.class)
在JUnit4.0之前,对错误的测试,我们只能通过fail来产生一个错误,并在try块里面assertTrue(true)来测试。现在,通过@Test元数据中的expected属性。expected属性的值是一个异常的类型
@Test(timeout=xxx):
该元数据传入了一个时间(毫秒)给测试方法,
如果测试方法在制定的时间之内没有运行完,则测试也失败。
@ignore:
该元数据标记的测试方法在测试中会被忽略。当测试的方法还没有实现,或者测试的方法已经过时,或者在某种条件下才能测试该方法(比如需要一个数据库联接,而在本地测试的时候,数据库并没有连接),那么使用该标签来标示这个方法。同时,你可以为该标签传递一个String的参数,来表明为什么会忽略这个测试方法。比如:@lgnore(“该方法还没有实现”),在执行的时候,仅会报告该方法没有实现,而不会运行测试方法。
相关推荐
Junit基础教程与学习
此文档非常有助于刚刚接触junit的人来学习,图文并茂,很容易上手!
Junit 4 Tutorials(Junit 4 系列教程) 二、Junit4 注解
Junit 4 annotations provide the basic functionality to write junit test. Basic Junit 4 annotations explained in this post are @BeforeClass, @AfterClass, @Before, @After and @Test. @BeforeClass annota
保姆级教程:SAP ABAPer如何为VF01销售发票和MIRO发票校验配置凭证替代(含AC_DOCUMENT BADI完整代码示例)
本文详细解析了SAP ABAP中通过AC_DOCUMENT BADI实现VF01销售发票和MIRO发票校验的凭证替代技术。从技术选型到BADI实施步骤,再到核心逻辑代码示例,为ABAP开发者提供了一套完整的解决方案,帮助应对财务部门复杂的业务需求。
JUnit 4 超详细教程(一)
JUnit 4 超详细教程1.介绍1.1.什么是JUnit?1.2.单元测试的好处1.3.JUnit 4 官网2.JUnit 4 的使用2.1.注解2.2.断言2.3.测试执行的顺序2.4.异常测试2.4.1.使用`assertThrows`方法2.4.2.Try/Catch 语句2.4.3.expected 参数和 @Test 注释一起使用2.4.4.预期异常规则2.5.忽略测试2.6.超时测试2.7.参数化测试2.8.assertThat和Matchers2.8.1.assertThat2.8.2.JU
计算蛋白质结构中氨基酸之间的方向和方位
方向 (Direction):通过相邻氨基酸的 CαCα 原子坐标差值,得到方向向量,描述两个氨基酸之间的几何方向。方位 (Orientation):可以通过二面角(如 Psi)来表示相邻氨基酸之间的旋转关系,或者通过局部坐标系(基于 NN、CαCα、CC 原子)描述残基的空间取向。这些计算是研究蛋白质结构动力学、折叠过程、以及相互作用的基础,尤其是在使用机器学习和深度学习模型进行蛋白质结构预测时,这些几何信息有助于更好地捕捉残基之间的空间关系。
RTL8306交换机芯片与FPGA联调实战:5个网口+1个MAC的配置避坑指南
本文详细解析了RTL8306交换机芯片与FPGA联调中的关键技术难点,特别是MAC5寄存器的配置陷阱和PHY页切换机制。通过实战案例和优化策略,帮助开发者高效配置5个网口+1个MAC的工业级网络设备,提升系统稳定性和实时性。
JUnit 4 超详细教程(二)
JUnit 4 超详细教程(二)1.在套件中聚合测试2.分类2.1.在Maven中使用分类2.2.在Gradle中使用分类2.3.分类的典型用法 上篇文档地址:JUnit 4 超详细教程(一) 1.在套件中聚合测试 使用“Suite”作为运行程序,可以手动构建包含来自多个类的测试的套件。它是JUnit4与JUnit3.8.xstatic Test suite()方法的等价物。 要使用它,请使用@RunWith(Suite.class)和`@SuiteClasses(TestClass1.class,…)注释
多模态论文笔记——VQ-VAE和VQ-VAE-2
本文详细介绍VQ-VAE和VQ-VAE-2的原理和训练过程,为后面的dVAE在DALLE中的使用打下坚实的基础。
JUnit4使用教程-快速入门
序言 大学刚学java的时候就听说过JUnit了,单元测试框架,很好用的测试框架,JUnit测试框架将测试更加便捷和容易,编写测试代码也是简单、明了,功能强大。今天我给大家简单分享一下最新JUnit4的使用,几分钟入门! 导入jar包 在集成开发环境中导入相应jar包:junit-4.12.jar、hamcrest-core-1.3.rc2.jar、hamcrest-library-1...
2022年华为ICT大赛 全球总决赛!中文综合任务书-网络赛道真题!
2022年华为ICT大赛 全球总决赛!综合任务书-网络赛道真题-中文翻译版
【安全设备篇】HVV面试专题
还有就是这个可能是被访问的这个内网系统,本身业务系统存在业务逻辑问题,因为内网所布置的很多业务系统往往不会考虑一些安全性问题,比如在正常的业务逻辑请求中直接带了sql语句,就会触发设备规则产生告警,这一类是属于误报,然后会将此告警上报给研判人员,需要研判组专家和甲方客户确认下是否是该系统存在此业务逻辑问题,并且需要确认告警的源ip在此告警的时间段附近有没有进行操作过。天眼日志分析主要基于系统和应用程序的日志数据来识别安全威胁,而威胁感知则通过收集和分析多种来源的情报信息。理解威胁的性质和威胁背后的原理。
JUnit4 入门教程
<br />在JUnit 3中我们是怎样写一个单元测试的。比如下面一个类:<br /> public class AddOperation {<br /> public int add(int x,int y){<br /> return x+y;<br /> }<br /> }<br />我们要测试add这个方法,我们写单元测试得这么写:<br /> import junit.framework.TestCase;<br /> impo
【示波器专题】无源探头的常用附件
使用探头进行测试,我们不仅要知道探头的原理,还需要了解探头的常用附件及其使用方式,这样才能在尽可能在测试中提高效率且减少出错的概率
JUnit4单元测试入门教程
JUnit4单元测试入门教程 - 简书 本文按以下顺序讲解JUnit4的使用 下载jar包 单元测试初体验 自动生成测试类 执行顺序 @Test的属性 下载jar包## 下载地址在github上,把以下两个jar包都下载下来。 下载junit-4.12.jar,junit-4.12-javadoc.jar(文档),junit-4.12-sources.jar(源码)。 下载hamcrest-core-1.3.jar,hamcrest-core-1.3-javadoc.ja.
PX4从放弃到精通(二十二):日志
文章目录前言一、下载日志二、ulog转CSV三、利用flightplot软件分析PX4的ulog日志1 windos安装2 ubuntu18.04安装四、使用PlotJuggler分析PX4日志五、设置日志记录条件六、添加自定义日志消息 前言 PX4 1.10以上固件 QGC 一、下载日志 将飞控链接地面站,在下图页面点击“刷新”,即可看到保存的日志(前提是要有TF卡) 选择需要下载的日志,点击右侧的“下载”,然后选择目录即可进行下载,如果想擦除所有的日志,可以点击右侧的“擦除全部” 二、ulog转CS
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
(IDEA)JUnit4单元测试入门教程
本文按以下顺序讲解JUnit4的使用 下载jar包 单元测试初体验 自动生成测试类 执行顺序 @Test的属性 下载jar包 下载地址 在github上,把以下两个jar包都下载下来。 下载junit-4.12.jar,junit-4.12-javadoc.jar(文档),junit-4.12-sources.jar(源码)。 最前面那个pom是Maven的配置文件,如果你需要的话也下载下...
RU DOS版、EFI版32bit/64bit BIOS常用工具
DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。
Idea配置JUnit4单元测试入门
pom.xml文件配置<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE</version> <scope>test</scope> </dependency>然后创建一个和src同级别
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
NTscan扫描工具
ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。
Junit4教程(转)
文章出自:http://blog.csdn.net/xuxuxiaojie/article/details/5628671 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这 一小部分功能是正确的。但是,我们同时应该确保每一个函数都完全正确,因为如果我们今后如果对程序进行扩展,用到了某个
在Eclipse中使用JUnit4进行单元测试
我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这 一小部分功能是正确的。但是,我们同时应该确保每一个函数都完全正确,因为如果我们今后如果对程序进行扩展,用到了某个函数的其他功能,而这个功能有bug的话,那绝对是一件非常郁闷的事情。所以说,每编写完一个函数之后,都应该对这个函数的方方面面进行测试,这...
SpringBoot入门教程
仅供学习使用,欢迎关注大佬本人:InvQ springBoot 入门(一)—— 使用idea创建第一个springBoot项目 springBoot 入门(二)—— 使用 spring.profiles.active来区分配置 springBoot 入门(三)—— 使用 RestController springBoot 入门(四)—— 使用 纯注解方式的junit整合测试 springBoot 入门(五)—— 使用 纯注解方式 的springboot+ mybatis+junit4 整合 springBo
Junit4入门及使用
Eclipse上Junit4入门 1.新建一个JavaProject项目,并创建测试类: 2.在创建好的Calculate类中添加如下方法: package com.util; public class Caculate { public int add(int x, int y) { //加法 return x + y; } publi...
JUnit4.x快速入门
作为程序员,如果我们要测试一个方法时,我们一般直接在类中使用main方法进行测试。当然大家觉得很爽,但这只限于对小程序而言。 对于大的项目,要保证项目的健壮性,我们一般建议使用单元测试。单元测试有很多工具,这里我们使用的是JUnit4.x。 下面我们就以一个小例子来让大家快速的入门(我这里说的只是入门级的知识,某些大神可以直接略过!!): 1、我们所需要的资源包有: 对于这些包,大家可
8227



被折叠的 条评论
为什么被折叠?



