JUnit4.8.2源码分析-1 说明
阅读本系列文章时须要知道的:
JUnit是由GOF 之中的一个的Erich Gamma和 Kent Beck 编写的一个开源的单元測试框架,分析JUnit源码的主要目的是学习当中对设计模式的运用。JUnit也是一个研究怎样应对版本号升级和接口变化的案例。
链接1:源码分析
JUnit4.8.2源码分析-1单元測试类
JUnit4.8.2源码分析-2 Request和Description
JUnit4.8.2源码分析-3 TestClass 和RunnerBuilder
JUnit4.8.2源码分析-4 RunNotifier与RunListener
JUnit4.8.2源码分析-1说明
JUnit4.8.2源码分析-1说明
JUnit4.8.2源码分析-1说明
JUnit4.8.2源码分析-1说明
链接2:使用JUnit的样例
1.JUnit4.8.2源码问题
因为yqj2065下载和使用的BlueJ所集成的版本号是JUnit4.8.2。所以就分析一下JUnit4.8.2的源码(CSDN下载)。解压后将它们导入BlueJ;编译它们时BlueJ会警告编译的类已经在BlueJ的库中,编译后使用的还将是库中的类,于是熟悉了的类我们能够在BlueJ中删除(反正我也不准备打包替代库中的JUnit)。
某些JUnit类型,看完了并且不准备回头再看时。yqj2065会在BlueJ中将它删除
——每删除一个表示自己又前进了一点。删除如NullBuilder时,将import
org.junit.internal.builders.NullBuilder加到本包的它的客户类中(其它包使用的。是BlueJ库中引入的包文件里的类)。以保证整个项目能够编译和生成JavaDoc。
在本系列文章中。大多数情况我不会把JUnit4.8.2源码粘贴出来,读者应该有自己的拷贝,或者看这里http://www.docjar.com/projects/JUnit-4.7-code.html。
2.熟悉JUnit的使用吗?
阅读源码。必须知道该框架的设计需求。假设精通JUnit。单元測试的需求应该较熟悉。大多数人如我。仅仅是简单地使用JUnit。
所以。有一些怎样使用JUnit的内容须要学习。
这里先从简单的样例入手。说明myTest包中程序的组织。
①应用程序/业务类(待測试的目标类)HelloWorld。能够在HelloWorld的类体中用main直接測试。TestHelloWorld演示了直接測试和模拟JUnit4的基本步骤的測试,见Java Annotation 提要。
②为了使用JUnit4測试它,须要设计一个单元測试类HelloWorldTest。当然。单元測试类在IDE如BlueJ中。我们不须要写程序。
package myTest;//myTest.units
public class HelloWorld {
public double add(double m,double n){
return m+n;
}
public double add2(double m,double n){
return m+n;
}
}
package myTest;
import org.junit.Test;//@Test
import static org.junit.Assert.*;//assertEquals
public class Unit0{
@Test
public void add(){
HelloWorld h = new HelloWorld();
assertEquals(7.0, h.add(1, 2), 0.1);
}
}
单元測试类TestInJUnit4则是手工敲的代码,单元測试类图标为暗绿色,能够直接运行其@Test方法。
JUnit将处理的是单元測试类。@Test等标注/Annotation定义一项測试。
JUnit通过反射解析RUNTIME标注,
单元測试类的一个測试是一个public void 方法。
③为了验证JUnit4.8.2源码,我们能够直接编写XxxUnit单元測试类(包括各种标注)。而验证代码通常取名<JUnit class name>Demo,如RequestDemo。
3.单元測试类
编写单元測试类时,最经常使用的是各种标注、org.junit.Assert、Assume;须要提供很多其它代码的測试,请參考:
JUnit4.8.2的标注列举例如以下。
@Test标注的源码
package org.junit;
import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Test {
/**
* Default empty exception
*/
static class None extends Throwable {
private static final long serialVersionUID= 1L;
private None() {
}
} /**
* Optionally specify <code>expected</code>, a Throwable, to cause a test method to succeed iff
* an exception of the specified class is thrown by the method.
*/
Class<? extends Throwable> expected() default None.class; /**
* Optionally specify <code>timeout</code> in milliseconds to cause a test method to fail if it
* takes longer than that number of milliseconds.*/
long timeout() default 0L;
}
org.junit.Ignore @Target({ElementType.METHOD, ElementType.TYPE})
@Before和@After标示的方法仅仅能各有一个。代替了JUnit曾经版本号中的setUp和tearDown方法
org.junit.BeforeClass @Target(ElementType.METHOD)
org.junit.Before @Target(ElementType.METHOD)
org.junit.AfterClass @Target(ElementType.METHOD)
org.junit.After @Target(ElementType.METHOD)
org.junit.Rule
org.junit.runner.RunWith @Target(ElementType.TYPE),使用指定Runner执行測试。默认的Runner为org.junit.runners.JUnit4。
org.junit.runners.Suite.SuiteClasses @Target(ElementType.TYPE)。将全部须要执行的測试类组成组/ Suite。一次性的执行以方便測试工作。
org.junit.runners.Parameterized.Parameters @Target(ElementType.METHOD),參数化測试
org.junit.experimental.theories.suppliers. TestedOn
org.junit.experimental.theories. DataPoint
org.junit.experimental.theories.DataPoints
org.junit.experimental.theories.ParametersSuppliedBy
org.junit.experimental.theories.Theory
org.junit.experimental.categories.Categories.ExcludeCategory
org.junit.experimental.categories.Categories.IncludeCategory
org.junit.experimental.categories.Category
JUnit4.8.2源码分析-1 说明的更多相关文章
- JUnit4.8.2源码分析-4 RunNotifier与RunListener
JUnit4运行过程中,org.junit.runner.notification. RunListener和RunNotifier运用了观察者模式. 1.观察者 观察者Observer/Listen ...
- 【JUnit4.10源码分析】5 Statement
假设要评选JUnit中最最重要的类型.或者说核心,无疑是org.junit.runners.model.Statement.Runner等类型看起来热闹而已. package org.junit.ru ...
- JUnit4.12 源码分析之TestClass
1. TestClass // 源码:org.junit.runners.model.TestClass // 该方法主要提供方法校验和注解搜索 public class TestClass impl ...
- 【JUnit4.10源码分析】6.1 排序和过滤
abstract class ParentRunner<T> extends Runner implements Filterable,Sortable 本节介绍排序和过滤. (尽管JUn ...
- JUnit源码分析 - 扩展 - 自定义Rule
JUnit Rule简述 Rule是JUnit 4.7之后新加入的特性,有点类似于拦截器,可以在测试类或测试方法执行前后添加额外的处理,本质上是对@BeforeClass, @AfterClass, ...
- JUnit源码分析 - 扩展 - 自定义RunListener
RunListener简述 JUnit4中的RunListener类用来监听测试执行的各个阶段,由RunNotifier通知测试去运行.RunListener与RunNotifier之间的协作应用的是 ...
- 【异常及源码分析】org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping
一.异常出现的场景 1)异常出现的SQL @Select("SELECT\n" + " id,discount_type ,min_charge, ${cardFee} ...
- Junit 3.8.1 源码分析(一)
写在前面:本文基于Junit3.8.1版本,因为这是我第一次进行源码学习,先从简单的源码开始学起 1. 示例代码 1.1 准备工作 下载Junit3.8.1的JAR包 需要下载junit-3.8.1- ...
- ABP源码分析一:整体项目结构及目录
ABP是一套非常优秀的web应用程序架构,适合用来搭建集中式架构的web应用程序. 整个Abp的Infrastructure是以Abp这个package为核心模块(core)+15个模块(module ...
随机推荐
- 理解OCI(Open Container Initiative)及docker的OCI实现(转)
OCI定义了容器运行时标准,runC是Docker按照开放容器格式标准(OCF, Open Container Format)制定的一种具体实现. runC是从Docker的libcontainer中 ...
- [BZOJ2006] [NOI2010]超级钢琴 主席树+贪心+优先队列
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 3591 Solved: 1780[Submit][Statu ...
- (3)三剑客之sed
(1)基本介绍 1) 工作流程:sed每次处理一行内容,处理时,把当前处理的行存储在临时缓存区,称为模式空间,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,直到内容处理完毕2 ...
- python os用法精简版
import os print(os.getcwd()) #返回当前路径,无参数 print(os.listdir('E:\zsfile')) #该路径下所有文件名 os.remove('E:\zsf ...
- EasyUI中combobox的代码实例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [jquery] 删除文章的时候弹出确认窗口
[<a href="{:U(GROUP_NAME . '/Category/delCate')}/id/{$v.id}" onclick='return del();'> ...
- 某dalao贼快的hash?
#include<map> #include<cstdio> #include<iostream> #include<ext/pb_ds/assoc_cont ...
- [BZOJ4316]小C的独立集(圆方树DP)
题意:求仙人掌图直径. 算法:建出仙人掌圆方树,对于圆点直接做普通的树上DP(忽略方点儿子),方点做环上DP并将值直接赋给父亲. 建图时有一个很好的性质,就是一个方点在邻接表里的点的顺序正好就是从环的 ...
- 【神奇の做法】bzoj2456 mode
题解:http://www.tuicool.com/articles/BfQBzif #include<cstdio> using namespace std; int n,x,ans,t ...
- elasticsearch将数据导出json文件【使用elasticdump】
1.前提准备 需要使用npm安装,还未安装的朋友可以阅读另一篇我的博客<安装使用npm>,windows环境. 2.安装es-dump 打开终端窗口PowerShell或者cmd. 输入命 ...