序,Junit测试是单元测试的一个框架,提供了很多方法,供我们快速开展单元测试。现在就让我们慢慢学习Junit单元测试框架

一、Junit的三个核心概念测试类、测试集、测试运行器

1 测试类

公共的,包含一个无参构造函数,含有一个或几个测试方法(@Test注释)。没有为测试类定义测试集时,JUnit自动提供一个测试集。

2 测试集

把多个相关测试归入一组,可以使一个测试类,也可以包含多个测试类。

3 测试运行器

执行测试集的程序,JUnit4提供了一些测试运行器,如下:

 
运行器 目的
org.junit.internal.runners.JUnit38ClassRunner 作用仅仅是为了向后兼容,将测试用例作为JUnit3.8的测试用例来启动
org.junit.runners.JUnit4 作为JUnit4的测试用来来启动
org.junit.runners.Suite Suite是一个包含不同测试的容器,同时Suite也是一个运行器,可以运行一个测试类中的所有以@Test注释的方法
org.junit.runners.Parameterized 可以使用不同参数来运行相同的测试集

二、使用参数化运行器Parameterized运行测试的例子

举一个org.junit.runners.Parameterized的例子:

在这个例子中,可以指定运行器为Parameterized,测运行器的特点是允许你使用不同的参数多次运行同一个测试。

解释:

1 必须使用@RunWith注释,并且Parameterized.class为参数值

2 声明变量

3 提供一个用@Parameters注释的方法

。。。未完待续。

package com;

import static org.junit.Assert.*;

import java.util.Arrays;
import java.util.Collection; import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
import org.junit.runners.Parameterized; @RunWith(value = Parameterized.class)//指定测试运行器
public class ParameterizedTest { private double expected;
private double valueOne;
private double valueTwo; @Parameters
public static Collection<Integer[]> getTestParameters() {
return Arrays.asList(new Integer[][] { { 2, 1, 1 }, { 3, 2, 1 },
{ 4, 3, 1 } });
} public ParameterizedTest(double expected, double valueOne, double valueTwo) {
this.expected = expected;
this.valueOne = valueOne;
this.valueTwo = valueTwo;
} @Test
public void sum(){
APP app = new APP();
assertEquals(expected,app.getSum(valueOne, valueTwo),0);
System.out.println("--");
}
}

三、JUnitCore facade

org.junit.runner.JUnitCore,可以运行任何测试运行器

JUnitCore决定使用哪个运行器来运行你的测试。

四、自定义测试运行器

需继承自org.junit.runner.Runner.Runner类

五、用Suite来组合测试

Suite对象其实是一个运行器(Runner),可以执行测试类中所有@Test注释的方法。

测试集还可以嵌套,看下面示例:

//测试类A
public class TestCaseA{
@Test
public void testA1(){
//omitted
}
}
//测试类B
public class TestCaseB{
@Test
public void testB1(){
//omitted
}
}
//测试集合A
@RunWith(Suite.class)
@SuiteClasses({TestCaseA.class})
public class TestSuiteA { }
//测试集合B
@RunWith(Suite.class)
@SuiteClasses({TestCaseB.class})
public class TestSuiteB { } //测试集合,把测试集合A和测试集合B合成为一个大的测试集合
@RunWith(Suite.class)
@SuiteClasses({TestSuiteA.class,TestSuiteB.class})
public class MasterTestSuite { }

Junit初级编码(二)探索JUnit核心的更多相关文章

  1. Junit初级编码(一)第一个Junit测试程序

    序,Junit测试是单元测试的一个框架,提供了很多方法,供我们快速开展单元测试.目前最新版本JAR包为4.12,官网地址为http://junit.org/ 一.第一个Junit测试程序 1 去官网下 ...

  2. [置顶] JUnit入门教程(二)

    一:介绍 接着上次的课程,今天我们学习JUnit4的新特性 assertThat()方法,这种方式和其余的assert方法比起来,更加接进英语. 二:分析API API中的例子: 参数 T Actua ...

  3. 深入探索 JUnit 4

    开始之前 关于本教程 引入 Java 5 注释为 JUnit 带来了显著改变,使它从一个受广大开发人员了解和喜爱的测试框架转变成了一个更为精简但却不那么为人熟知的框架.在本教程中,我将探讨 JUnit ...

  4. Junit初级篇

    @Test介绍 @Test是我们在写测试脚本时最常用到的,大部分情况下如果没用这个注解,一个方法就不能成为测试用例.如下代码是一个最普通的测试脚本: import org.junit.Assert; ...

  5. 【单元测试】Junit 4(二)--eclipse配置Junit+Junit基础注解

    1.0 前言 ​ 前面我们介绍了白盒测试方法,后面我们来介绍一下Junit 4,使用的是eclipse(用IDEA的小伙伴可以撤了) 1.1 配置Junit 4 1.1.1 安装包 我们需要三个jar ...

  6. Junit初级应用实例

    Request: public interface Request { String getName(); } Response: public interface Response { String ...

  7. MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射

    在上一章中我们学习了<MyBatis学习总结(一)——ORM概要与MyBatis快速起步>,这一章主要是介绍MyBatis核心配置文件.使用接口+XML实现完整数据访问.输入参数映射与输出 ...

  8. GCD介绍(二): 多核心的性能

    GCD介绍(二): 多核心的性能  概念         为了在单一进程中充分发挥多核的优势,我们有必要使用多线程技术(我们没必要去提多进程,这玩意儿和GCD没关系).在低层,GCD全局dispatc ...

  9. spring batch(二):核心部分(1):配置Spring batch

    spring batch(二):核心部分(1):配置Spring batch 博客分类: Spring 经验 java   chapter 3.Batch configuration 1.spring ...

随机推荐

  1. body中设置-webkit-scrollbar竖向滚动条,在手机浏览器上无效

    暂时无解,如果是chrome的PC模式,滚动条是没有的,但如果是手机模式,滚动条会出现,且无法设置其样式,滚完后会自动消失. 如果设置div这些块元素,完全没问题.

  2. IIS如何设置可以让.aspx后缀的文件直接下载

    修改配置文件:<system.webServer> <staticContent> <remove fileExtension=".aspx" /&g ...

  3. Android NDK学习之第一个实例---端口扫描

    为什么要写一个端口扫描的程序,Java来写不是很方便吗?因为我也没有想到什么例子能够方便的来练习.于是想到以前找到的端口扫描的C代码,于是想用他们来练习.扫描服务端端口的方式有许多种,最简单的就是直接 ...

  4. C语言的时间函数

    下面是C语言的获取本地时间和构造时间进行格式化时间显示输出的相关函数:This page is part of release 3.35 of the Linux man-pages project. ...

  5. poj1279 半平面交

    题意:没看懂= = sol:在纸上随便画两下就可以看出,答案即按逆时针方向建立line,求它们的半平面交的面积. 模板题.注意输出答案时输出ans+eps,否则可能会出现结果为-0.00的情况. #i ...

  6. 洛谷P1288 取数游戏II

    题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流 ...

  7. RabbitMQ 通过记日志来看routingkey

    RoutingKey 每个项目都需要记录日志,日志则一般会分为多种级别,常见的是 Info.debug.warn.Error 对于前三种日志,在项目运行中会产生大量的消息,但是一般多数情况下是不会用到 ...

  8. Compiler Warning (level 3) C4800

    #pragma warning( disable : 4800 ) // forcing bool 'true' or 'false' ,忽略4800 警告#pragma warning( disab ...

  9. Linux tcpdump 命令详解

    简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的& ...

  10. NOIp 0904 出题报告

    T1 huajitree 纯模拟,把S拆成二进制查一下有多少个1,然后把这个数和N*M求一下gcd,除一下输出就好了.说求期望值可能对新高一不太友好…. //huajitree //2016.8.22 ...