单元测试JUnit 4(二)——keeps the bar green to keeps the code clean
1.Failure和Error
Failure是指测试失败 Error是指测试程序本身出错 (int a=10/0)
2.JUnit常用注解
2.1 @RunWith: 可以更改测试运行器(继承org.junit.runner.Runner)
2.2 @Test: 将一个普通的方法修饰成为一个测试方法
Test有两个参数:
expected 表示预期可能产生的异常,如果匹配则不报错
timeout 表示超时时间,如果超过这个时间没有完成,则抛出TestTimedOutException
@Test(expected=ArithmeticException.class,timeout=2000)//第一个参数是异常类的类类型,第二个参数是毫秒数
2.3 全局的初始化和销毁:@BeforeClass和@AfterClass
@BeforeClass: 他会在所有的方法运行前被执行,static修饰,用来进行一些开销昂贵的初始化操作,比如连接数据库。
@AfterClass: 他会在所有的方法运行结束后被执行,static修饰
注意这两个修饰符修饰的方法必须是public static void的,并且没有参数(no-arg)。
Note:
即便@BeforeClass修饰的方法抛出异常了,@AfterClass修饰的方法也会照常执行。
基类的@BeforeClass方法会在子类的@BeforeClass方法之前进行;而基类的@AfterClass方法会在子类的@AfterClass方法之后进行。 2.4 这两个方法会在每一个测试用例的前后被调用,所以可以用来创建对象,对于每个测试用例来说都是一个新的对象。
@Before: 会在每一个测试方法被运行前执行一次
@After: 会在每一个测试方法运行后被执行一次
2.5 @Ignore注解可用于修饰测试类与测试方法,被@Ignore所修饰的方法或类中的测试(@Test修饰的测试)将不会被执行。
@Ignore中可以加上参数值,说明忽略测试的原因。
2.6 示例(以数值计算测试为例)
2.6.1 Calculator.java
package com.zang.junit4.test; public class Calculator
{
public int add(int a, int b)
{
return a + b;
} public int subtract(int a, int b)
{
return a - b;
} public int multiply(int a, int b)
{
return a * b;
} public int divide(int a, int b) throws Exception
{
if (0 == b)
{
throw new Exception("除数不能为0");
}
return a / b;
}
}
2.6.2 CalculatorTest.java
package com.zang.junit4.test; import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test; import static org.junit.Assert.assertEquals;//静态导入 public class CalculatorTest
{
private Calculator cal = null; @BeforeClass
public static void globalInit()
{
System.out.println("global Init invoked!");
} @AfterClass
public static void globalDestroy()
{
System.out.println("global Destroy invoked!");
} @Before
public void init()//setUp()
{ cal = new Calculator();
System.out.println("init --> cal: " + cal); } @After
public void destroy()//tearDown()
{
System.out.println("destroy");
} @Test
public void testAdd()
{
System.out.println("testAdd");
int result = cal.add(3, 5);
assertEquals(8, result);
} @Test
public void testSubtract()
{
System.out.println("testSubtract");
int result = cal.subtract(1, 6);
assertEquals(-5, result); } @Test
public void testMultiply()
{
System.out.println("testMultiply");
int result = cal.multiply(5, 9);
assertEquals(45, result);
} }
2.6.3 Run As JUnit Test ——>控制台输出
2.7 JUnit运行流程
1. @BeforeClass修饰的方法会在所有方法被调用前执行,而且该方法是静态的,所以当测试类被加载后接着就会运行它,而且在内存中它只会存在一份实例,
它比较适合加载配置文件
2. @AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接
3. @Before和@After会在每个测试方法的前后各执行一次 运行顺序:
@BeforeClass-> (@Before->@Test->@After) ...->@AfterClass
3.运行多个测试
3.1 Run Configurations
3.2 使用JUnit测试套件
测试套件就是组织测试类一起运行的
3.2.1. 写一个作为测试套件的入口类,这个类里不包含其他的方法!!!
3.2.2. 更改测试运行器Suite.class.
3.2.3. 将要测试的类作为数组传入到Suite.SuiteClasses({})
package com.zang.junit4.test; import static org.junit.Assert.*;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) //将测试类改为测试套件类
@SuiteClasses({TaskTest1.class,TaskTest2.class,TaskTest3.class}) //用数组的形式将测试的类添加到测试套件中
public class SuiteTest { //要用public修饰,套件测试类要为空。不能有方法。
}
注意: 遵守约定,比如:
a) 类放在test包中 b) 类名用XXXTest结尾 c) 方法用testMethod命名
单元测试JUnit 4(二)——keeps the bar green to keeps the code clean的更多相关文章
- 单元测试JUnit 4 (一)——keeps the bar green to keeps the code clean
1. 导读 Junit是一个可编写重复测试的简单框架,是基于Xunit架构的单元测试框架的实例.Junit4最大的改进是大量使用注解(元数据),很多实际执行过程都在Junit的后台做完了,而且写tes ...
- junit单元测试(keeps the bar green to keeps the code clean)
error是程序错误,failure是测试错误. junit概要: JUnit是由 Erich Gamma (设计模式的创始人)和 Kent Beck (敏捷开发的创始人之一)编写的一个回归测试框架( ...
- keep the bar green to keep the code clean——Junit详解(二)
测试用例&测试套件 举个栗子: 编写MyStack类模拟栈,并对其进行测试用例编写测试: 编写文件删除方法,并对其删除测试. 不再做演示,戳此获取代码 MyStack类: public cla ...
- keep the bar green to keep the code clean——Junit详解(一)
测试用例 单元测试时每个开发人员必需掌握的,是保证开发过程中代码的准确性,无误性,保证代码质量.敏捷开发模式是先根据用户需求写测试用例,考虑基本所有用户所需要的情况,再写实现方法.单元测试有很多种,当 ...
- 菜鸟学Java(二十一)——如何更好的进行单元测试——JUnit
测试在软件生命周期中的重要性,不用我多说想必大家也都非常清楚.软件测试有很多分类,从测试的方法上可分为:黑盒测试.白盒测试.静态测试.动态测试等:从软件开发的过程分为:单元测试.集成测试.确认测试.验 ...
- idea单元测试junit
参考文章地址地址:http://blog.csdn.net/u011138533/article/details/52165577 本文按以下顺序讲解JUnit4的使用 下载jar包 单元测试初体验 ...
- 单元测试系列之二:Mock工具Jmockit实战
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6760272.html Mock工具Jm ...
- Spring注解AOP及单元测试junit(6)
2019-03-10/20:19:56 演示:将xml配置方式改为注解方式 静态以及动态代理推荐博客:https://blog.csdn.net/javazejian/article/details/ ...
- Java单元测试(Junit+Mock+代码覆盖率)---------转
Java单元测试(Junit+Mock+代码覆盖率) 原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测 ...
随机推荐
- xtuoj 1233 coins(dp)
Coins Accepted : 120 Submit : 305 Time Limit : 1000 MS Memory Limit : 65536 KB Coins Problem Des ...
- 【推导】计蒜客17119 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function
题意:给你n,m,让你求cos(nx)的展开式的(cos(x))^m项的系数. 更一般的式子是这样的:. 队友的代码: #include<cstdio> #include<algor ...
- 数据库之mysql的基本操作
1 数据库 1.1 数据库介绍 为什么要有数据库? 数据需要大量的存储,把数据永久保存下来,可以保存到文件中,当然也可以保存到数据库中. 数据库:通俗的说,存储数据的仓库,是管理数据的文件夹:存放数据 ...
- datatable无法设置横向滚动条(设置无效)
datatable设置横向滚动条无效 js如下: 页面如下: 设置 scrollx 属性为true时,还需在 table 添加 style="white-space: nowrap; &qu ...
- Java程序运行时内存划分
1.Java程序跨平台运行的原因 主要原因是:各种平台的JVM和字节码文件 Java源程序--具体平台的机器代码文件---被编译器翻译成平台无关的Class文件,又用特定JVM运行字节码文件,JVM在 ...
- Red Hat Enterprise Linux上配置SQL Server Always On Availability Group
http://www.cnblogs.com/lavender000/p/6946848.html
- 读懂MySQL执行计划
原文:https://mp.weixin.qq.com/s/-BlLvBKcF-yalELY7XkqaQ 前言 在之前的面试过程中,问到执行计划,有很多童鞋不知道是什么?甚至将执行计划与执行时间认为是 ...
- 小程序把图片转换成base64
1.首先需要到upng.js,然后upng.js需要pako.js,先一并下载了 2.然后就可以直接用了,具体代码如下: <!--pages/base/base.wxml--> <c ...
- STSDB 一
STSdb 4.0 是一个开源的NoSQL 数据库和虚拟文件系统,支持实时索引,完全用c#开发的. 引擎原理基于WaterfallTree(瀑布树)数据结构搭建 以下内容基于stsdb4.dll(4. ...
- linux环境php将word转换成pdf
原文地址:http://www.niu12.com/article/15 ubuntu.java环境.openoffice.jodConverter.php 1.安装java环境 a. jdk下载(我 ...