Junit4 简单使用
一、环境搭建
对于习惯使用Eclipse开发平台来说,Junit早已是非常通常的插件,在Eclipse开发平台中,可以非常方便地搭建Junit测试环境。
1、在Eclipse上创建工程,任何Java工程都行。
2、引入Junit的libraries库,选用Junit4。如下图所示:
3、新建一个Java类,用于演示Junit4类的自动生成,java代码如下:
- package com.hy;
- public class Demo {
- public void method1() {
- System.out.println("method1");
- }
- public void method2() {
- System.out.println("method2");
- }
- public void method3() {
- System.out.println("method3");
- }
- }
4、在该类上右键单击新建,选JUnit Test Case,自动生成一个对应的测试类,如下图所示:
4、这样就能自动地生成对应的测试类了,测试类代码发下:
- package com.hy;
- import static org.junit.Assert.*;
- import org.junit.After;
- import org.junit.AfterClass;
- import org.junit.Before;
- import org.junit.BeforeClass;
- import org.junit.Test;
- public class DemoTest {
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- }
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- }
- @Before
- public void setUp() throws Exception {
- }
- @After
- public void tearDown() throws Exception {
- }
- @Test
- public void testMethod1() {
- fail("Not yet implemented");
- }
- @Test
- public void testMethod2() {
- fail("Not yet implemented");
- }
- @Test
- public void testMethod3() {
- fail("Not yet implemented");
- }
- }
5、如此一来,测试类环境的搭建过程就完成了,最后要做的就是,根据实际的业务需求,对测试类中的测试方法编写单元测试代码,直到运行调通。
二、基本规则
从上面的演示可知,测试类名一般都以Test结尾,测试方法名以test开头。这个也是Junit的基本命名规则。
三、Junit注解
我们此次针对的是Junit4版本,注解也是在Junit4版本才有的,之前的版本并无注解功能。而注解开发基本上被认为是一种优秀的设计,所以我们写单元测试用例时,尽可能地去了解并使用注解。
@Test:使用该注解的方法为测试方法,自动运行时能够识别并被执行
包含两个参数:expected=XXXException.class 期望出现的异常
timeout=xxx 设定程序运行的超时时间
@Ignore:被忽略的测试方法
@Before:在每个测试方法之前运行
@After: 在每个测试方法之后运行
@BeforeClass:在所有测试开始之前运行
@AfterClass:在所有测试开始之后运行
以上几个就是Junit 4的关键注解,熟练使用这几个注解,将来的测试用例编写肯定能事半功倍。
注意:@Before与@BeforeClass的区别
@Before会加在每个方法前执行,即有几个@Test就会执行几遍。
@BeforeClass 只在所有测试之前执行,只会执行一次。并且@BeforeClass修饰的方法必须是公有的静态方法(public static )。
@After和@AfterClass也类似
每个测试类中这四个注解不能重复使用,一个方法只能从这四个注解中挑选其中一个。
四、基本写法
1、setUp(),tearDown(),setUpBeforeClass(),tearDownAfterClass()这四个方法其实就是对应的 @Before、@BeforeClass、@After、@AfterClass这四个注解,在Junit4开始使用注解时,其实可以替代这四个方法的功能,只是这四个方法是历史遗留方法,可以考虑使用,也可以直接使用注解替代。
2、Assert是单元测试用例的核心,建议使用静态导入。
3、待测试对象,一般建议设计成静态的。
4、测试方法的要求:带@Test注解,方法名随意,返回值必须为void,不能带有参数,可以声明异常(可以参考演示代码)。
5、Fixture方法的作用
前面介绍的@Before、@BeforeClass、@After、@AfterClass注解修饰的方法,即为Fixture方法,它是在某些阶段必然被调用的方法,如注解功能所示。
@Before、@After修饰方法的一个用处是对待测试对象的“复原”操作,如成员变量回归,数据库回滚等,目的是消除@Test方法之间的耦合。也可以用来打印日志。
@BeforeClass修饰方法可以设计成用来加载一些耗时耗力的操作,如文件流的读取,数据库连接等,然后在@AfterClass中释放对应的资源即可。
6、限时测试
@Test(timeout=1000)超时时间单位为毫秒
用于测试是否有死循环工是实时性要求比较高的用例,这个非常方便而且非常有用。
7、测试异常
@Test(expected=XXXException.class) XXXException为声明式异常
用来验证声明式异常,注意此测试的含义:出现了期望的异常,叫做正常,若没出现异常,Junit会报错,认为不正常。这段描述有些拗口,请各位多琢磨琢磨。
8、运行器Runner
类注解@RunWith,指定不同的类可以改变测试类的行为
9、参数化测试
主要是针对一些相同功能却要进行多组参数测试的情况,开发步骤如下:
1)参数化测试的类和普通测试类不同,要用特殊的Runner,类注解需要改为@RunWith(Parameterized.class)
2)定义该测试类的成员变量,一个放测试参数,另一个放该参数产生的预期结果
3)定义测试数据集合方法 public static Collection data() {...},注意该方法要用@Parameters修饰(数据格式为二维数组)
4)定义带参数的构造函数,注意定义数据集合时,要和构造函数参数次序一致
其他的与普通测试类似
注意:若测试数据有两条,则该类下的所有@Test的方法都会执行两次,所以参数化测试的类不要和别的@Test放在一起。参数化测试方法一般建议单独建立类。
演示代码如下:
- //指定@RunWith
- @RunWith(Parameterized.class)
- public class ParamTest {
- //定义成员变量,i为测试参数,j为测试结果
- private int i;
- private int j;
- //构造函数
- public ParamTest(int i, int j) {
- super();
- this.i = i;
- this.j = j;
- }
- //测试数据集合,注意使用的注解,数据结构及次序
- @Parameters
- public static Collection data() {
- return Arrays.asList(new Object[][]{{1,2},{3,4},{4,6}});
- }
- @Test
- public void testMethod1() {
- System.out.println(i);
- System.out.println(j);
- //简单测试,只测试参数加1会不会等于预期结果
- Assert.assertEquals(i+1, j);
- }
- }
预期的执行结果是前两组参数测试正确,最后一组测试错误,运行后的结果为:
执行结果与预期结果相符合,OK
10、打包测试
将测试类集中起来运行,提高测试效率,代码如下:
- @RunWith(Suite.class)
- @Suite.SuiteClasses({
- DemoTest.class
- })
- public class ModuleTest {
- public ModuleTest() {
- // TODO Auto-generated constructor stub
- }
- }
1)@Suite.SuiteClasses里面的是需要打包测试的类
2)该类中可以为空,类名建议为模块名+Test结尾,如ModuleTest.java
以上是Junit4的最基本的使用,相信掌握了这些,对于编写常规的测试用例已经不是难事,同样,Junit还有更多更有意思的功能等待我们去挖掘……
Junit4 简单使用的更多相关文章
- Junit4简单使用
一.Junit4是JAVA语言的单元测试框架,用于编写和运行可重复的测试,可以大大提高效率 1.使用Junit4必须在项目中导入Junit4.har文件 2.新建Junit Test case 勾选s ...
- Junit4的简单使用
junit4的简单使用 测试套件的使用 测试类1 package com.westward; import static org.junit.Assert.*; import org.junit.Te ...
- Junit4的最简单例子
首先是JUnit的百度百科介绍: 接下来是JUnit4的最简单例子,使用的开发软件为Eclispe(里面集成了JUnit): 1.建立一个java project: 2.建立一个java class: ...
- junit4进行单元测试
一.前言 提供服务的时候,为了保证服务的正确性,有时候需要编写测试类验证其正确性和可用性.以前的做法都是自己简单写一个控制层,然后在控制层里调用服务并测试,这样做虽然能够达到测试的目的,但是太不专业了 ...
- [转]在Eclipse中使用JUnit4进行单元测试(中级篇)
我们继续对初级篇中的例子进行分析.初级篇中我们使用Eclipse自动生成了一个测试框架,在这篇文章中,我们来仔细分析一下这个测试框架中的每一个细节,知其然更要知其所以然,才能更加熟练地应用JUnit4 ...
- [转]在Eclipse中使用JUnit4进行单元测试(初级篇)
首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me,先来体验一下单元测试的快感! 首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除 ...
- 基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标GPS监控平台
开发企业级的部标GPS监控平台,投入的开发力量很大,开发周期也很长,选择主流的开发语言以及成熟的开源技术框架来构建基础平台,是最恰当不过的事情,在设计之初就避免掉了技术选型的风险,避免以后在开发过程中 ...
- 初学软件测试之——如何使用Junit4
前几天刚刚接触软件测试,这篇文章主要是介绍使用eclipse的插件——Junit4进行单元测试.下面先介绍一下单元测试的定义:单元测试(unit testing),是指对软件中的最小可测试单元进行检查 ...
- 在Eclipse中使用JUnit4进行单元测试(高级篇)
通过前2篇文章,您一定对JUnit有了一个基本的了解,下面我们来探讨一下JUnit4中一些高级特性. 一.高级Fixture 上一篇文章中我们介绍了两个Fixture标注,分别是@Before和@Af ...
随机推荐
- hiho #1144 : 01串(模拟)
#1144 : 01串 时间限制:7000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个整数n和m,求是否存在恰好包含n个0和m个1的01串S,使得S中不存在子串"001 ...
- 在CentOS/Windows下配置Nginx(以及踩坑)
在CentOS/Windows下配置Nginx(以及踩坑) 1. 序言 因为这类文章网上比较多,实际操作起来也大同小异,所以我并不会着重于详细配置方面,而是将我配置时踩的坑写出来. 2. CentOS ...
- [转] Siamese network 孪生神经网络--一个简单神奇的结构
转自: 作者:fighting41love 链接:https://www.jianshu.com/p/92d7f6eaacf5 1.名字的由来 Siamese和Chinese有点像.Siam是古时候泰 ...
- CodeForces 557C Arthur and Table STL的使用
题意:一个桌子有n条腿,每条腿有一定的长度l,和砍下的花费w,现在规定,桌子稳的条件是长度最长的腿(可多个)的数量大于长度小于它的桌子腿数量,且不存在比他还长的桌子腿,求让桌子腿稳定的最小的花费 #i ...
- 洛谷 P2820 局域网x
题目背景 某个局域网内有n(n<=100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成网络卡的现象.因为连 ...
- Java 内部类、成员类、局部类、匿名类等
Java各种称呼类详解 Java有各种各样类,内部类.嵌套类.成员类.局部类(本地类).静态类.匿名类.文件类以及这些组合起来的称呼类,成员内部类,成员匿名类,成员嵌套类,本地匿名类等,真是多的不行, ...
- Linux TCP套接字选项 之 SO_REUSEADDR && SO_REUSEPORT
说明 前面从stackoverflow上找了一篇讲这两个选项的文章,文章内容很长,读到最后对Linux中的这两个选项还是有些迷茫,所以重新写一篇文章来做一个总结: 本文只总结TCP单播部分,并且只讨论 ...
- redis深度历险:核心原理与应用实践--笔记
- 访问 Django 项目的静态资源
from django.urls import path, re_path from django.conf import settingsfrom django.views.static impor ...
- Icon 图标
Icon 图标 提供了一套常用的图标集合. ¶使用方法 直接通过设置类名为 el-icon-iconName 来使用即可.例如: <i class="el-icon-edit" ...