JUnit4简易教程
1.下载JUnit4的jar包,在项目上右键选properties->Java Build Path ->Libraries->Add library添加刚才的jar包
2.在项目中找一个要测试的类(或者在其他包中建立,再选要测试的类),右键New-> JUnit Test Case
3.如果是在要测试的类上new则Class under test直接会选中当前类,否则要自己手动选择要测试的类.
4.点击下一步则勾选要测试的方法,下一步则生成测试类.
5.点击生成的测试类,run as -> JUnit Test则可以进行测试.
下面讲解一下测试类中的一些注释的作用.
@Test标注
假设要测试的类是ClassA.java,生成的测试文件是ClassATest.java
我们要测试ClassA中的funcA方法,则我们在ClassATest.java中要先创建一个ClassA的对象
private static ClassA classa= new ClassA ();
在测试类ClassATest.java中的测试方法TestfuncA之前,我们要先添加@Test ,表示这个是测试函数,并且TestfuncA必须无返回值.
public void TestfuncA(){
assertEquals(2,classa.funcA()); //如果classa.funcA()的结果是2则正确,否则错误.
}
@Test的作用就是声明这个是测试方法.
@Ignore标注
假设测试类ClassATest.java中的测试方法TestfuncB的测试方法还没写好,不想测试的时候运行他,则可以用该标注来跳过.
@Before
我们想对ClassA做单元测试,但是可能里面的funcA运行之后,会影响funcB的值(如改变了全局变量).这个时候就要在测试类ClassATest.java中定义
一个还原初始值的方法,并在前面添加标注@Before,表示在每个单元测试之前都执行该方法.
@After
作用和@Before是一样的,只是运行的时机不同.
@BeforeClass 和 @AfterClass
原理和@Before和@After是一样的,只是运行的时机是 测试用例初始化时 和 当所有测试执行完毕之后.
@Test(timeout = 10000)
设置该方法的超时事件,防止测试的方法出现死循环然后一直卡住.
@Test(expected = ArithmeticException.class)
如果测试结果抛出了ArithmeticException异常则是正确的,否则是错误的.
@RunWith(XXXX.class)
指定测试代码提交给JUnit框架后用哪个运行器来执行,默认是TestClassRunner.class,但是要注意这个标注是用来修饰类的,不是用来修饰方法的.如果指定了,
整个类下面所有的方法都是用这个运行器.
@Suite.SuiteClasses
当我们写了很多很多个测试类,不想每个测试类单独运行,而是打包一次测试,则可以用这个标注.
@Suite.SuiteClasses({ClassATest.class,ClassBTest.class}),但是要注意,此时的运行器必须指定@RunWith(Suite.class)
@Parameters
当被测试的ClassA里面的funcA可以有多种输入,并且每种输入会有不要同的输出结果.我们想一次输入不同的参数,然后测试不同的结果.而不是为每种参数情况
写一个测试方法.这个时候就可以用Parameters的标注.
但是我们必须要为测试类ClassATest.java写一个构造方法
public Test(int expected,int input1,int input2)//构造方法,为各个参数赋值,Test中对这3个变量的定义在此省略。
{
this.expected=expected;//希望的结果
this.input1=input1;//输入1
this.input2=input2;//输入2
}
并且用标注Parameters
@Parameters
public static Collection prepareData()
{
Object[][] object ={{3,1,2},{-4,-1,-3},{5,0,5}};//对应构造方法中的3个参数
return Arrays.asList(object);//数组转化成集合形式。 }
此时,在测试函数中就可以用了
@Test
public void TestfuncA()
{
assertEquals(this.expected,classa.funcA(this.input1, this.input2));//注意是调用的成员变量。 }
JUnit4简易教程的更多相关文章
- 生活科技两相宜:(一)Win7使用微软SkyDrive网盘简易教程
今天得写一个Win7使用微软SkyDrive网盘的简易教程,主要是给我老婆看,顺便贴出来给大家共享一下:) 使用微软SkyDrive网盘有两个层次.一个是使用网页版,这个跟使用163或者QQ网盘 ...
- JavaScript简易教程(转)
原文:http://www.cnblogs.com/yanhaijing/p/3685304.html 这是我所知道的最完整最简洁的JavaScript基础教程. 这篇文章带你尽快走进JavaScri ...
- Emacs简易教程
Emacs简易教程阅读: 命令: $emacs 进入之后,输入: C-h t 这里,C-h表示按住[Ctrl]键的同时按h ####### 20090620 *退出: 输入“C-x C-c” *撤销: ...
- 文件上传利器SWFUpload入门简易教程
凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较A ...
- 【转】Delphi内嵌ASM简易教程
Delphi内嵌ASM简易教程 作者:heiying2006-03-19 18:33分类:默认分类标签: 前言 Delphi作为一个快速高效的开发平台,使用的人越来越多,但熟悉在Delphi代码中嵌入 ...
- Ant 简易教程
转载:http://www.cnblogs.com/jingmoxukong/p/4433945.html Ant 简易教程 Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动 ...
- Intellj IDEA 简易教程
Intellj IDEA 简易教程 目录 JDK 安装测试 IDEA 安装测试 调试 单元测试 重构 Git Android 其他 参考资料 Java开发IDE(Integrated Developm ...
- MetaProducts Offline Explorer使用简易教程
MetaProducts Offline Explorer使用简易教程 by windtrace 20170419 最近想下载一个网站上的内容打包成chm文件,以便离线浏览,webzip太长时间不更 ...
- Zabbix实战-简易教程系列
一.基础篇(安装和接入) Zabbix实战-简易教程--总流程 Zabbix实战-简易教程--整体架构图 Zabbix实战-简易教程--DB安装和表分区 Zabbix实战-简易教程--Server端 ...
随机推荐
- GNU Radio: Synchronization and MIMO Capability with USRP Devices
Application Note Synchronization and MIMO Capability with USRP Devices Ettus Research Introduction S ...
- Call to your teacher
链接:https://www.nowcoder.net/acm/contest/76/F来源:牛客网 Call to your teacher 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/ ...
- 第10课 初探 Qt 中的消息处理
1. Qt消息模型 (1)Qt封装了具体操作系统的消息机制 (2)Qt遵循经典的GUI消息驱动事件模型 2. 信号与槽 (1)Qt中定义了与系统消息相关的概念 ①信号(Signal):由操作系统产生的 ...
- 不用写代码就能实现深度学习?手把手教你用英伟达 DIGITS 解决图像分类问题
2006年,机器学习界泰斗Hinton,在Science上发表了一篇使用深度神经网络进行维数约简的论文 ,自此,神经网络再次走进人们的视野,进而引发了一场深度学习革命.深度学习之所以如此受关注,是因为 ...
- django-redis缓存
1.安装django依赖包 pip install djange-redis==4.8.0 2.配置文件settings 需要开启redis服务 sudo service redis start,否 ...
- Pthreads Hello World,忙等待,互斥量
▶ 一个简单的 Pthreads 程序(不按照<并行程序设计导论>中的程序来写) ● 代码 #include <stdio.h> #include <pthread.h& ...
- selenium webdriver——JS滚动到最底部
JS控制滚动条的位置: window.scrollTo(x,y); 竖向滚动条置顶 window.scrollTo(0,0); 竖向滚动条置底 window.scrollTo(0,document.b ...
- Rhythmk 学习 Hibernate 03 - Hibernate 之 延时加载 以及 ID 生成策略
Hibernate 加载数据 有get,跟Load 1.懒加载: 使用session.load(type,id)获取对象,并不读取数据库,只有在使用返回对象值才正真去查询数据库. @Test publ ...
- 「小程序JAVA实战」小程序的关注功能(65)
转自:https://idig8.com/2018/09/24/xiaochengxujavashizhanxiaochengxudeguanzhugongneng64/ 在个人页面,根据发布者个人和 ...
- 我的Linux之路——windows10用WMware安装CentOS7.5 虚拟机详细步骤
出自:https://www.jianshu.com/p/99f784d465f4 VMware简介: VMware是一个虚拟PC的软件,可以在现有的操纵系统上虚拟出一个新的硬件环境,相当于模拟出 ...