一个强大的单元测试框架:

一、组成部分:

1.注解:

(1)@Test 注解: 放在测试方法上,表示这是用于测试其他方法的一个测试单元

    @Test
public void testSum1(){
System.out.println("测试SumUtil类的方法sum1");
int result = SumUtil.sum1(1,2);
Assert.assertEquals(result,3);
}

(2)@Before 注解: 放在方法上,表示在测试之前要做的事情,比如开启数据库连接之类的

   @Before
public void before(){
System.out.println("测试之前做的事");
}

(3)@After 注解: 放在方法上,表示在测试之后要做的事情

    @After
public void after(){
System.out.println("测试之后做的事");
}

(4)@BeforeClass 注解: 修饰的方法会在所有方法被调用前执行,且该方法要是静态的,所以当测试类被加载后就接着运行它,而且在内存中他只会存在一份实例,他比较适合加载配置文件

    @BeforeClass
public static void beforeClass(){
System.out.println("在测试之前的之前需要做的事");
}

(5)@AfterClass 注解: 所修饰的方法通常用来对资源管理,如关闭数据库连接(针对所有测试,只执行一次 )

    @AfterClass
public static void afterClass(){
System.out.println("在测试之后的之后需要做的事");
}

(6)@Ignore 注解:忽略这个方法,不要测试它,让它一个人呆着

    @Ignore
public void testSum2(){
System.out.println("测试sum2");
int result = SumUtil.sum2(1,2,3);
Assert.assertEquals(result,6);
}

这里给一个实现上面所有注解的方法后,测试一个方法之后的结果:  这样就能明白每个注解的方法会在什么时候运行

在测试之前的之前需要做的事
测试之前做的事
测试SumUtil类的方法sum1
测试之后做的事
在测试之后的之后需要做的事

2.Assert:关于 Assert的用法,除了举例里的判断数字是否相等,还可以判断boolean, 是否是null ,是否是相同对象等等常见逻辑。

二、多个测试:

准备两个TestCase:

public class TestCase1 {

    @Before
public void before(){
System.out.println("测试之前做的事");
} @After
public void after(){
System.out.println("测试之后做的事");
} @BeforeClass
public static void beforeClass(){
System.out.println("在测试之前的之前需要做的事");
} @AfterClass
public static void afterClass(){
System.out.println("在测试之后的之后需要做的事");
} @Test
public void testSum1(){
System.out.println("TestCase1测试testSum1");
int result = SumUtil.sum1(1,2);
Assert.assertEquals(result,3);
} @Test
public void testSum2(){
System.out.println("TestCase1测试testSum1");
int result = SumUtil.sum2(1,2,3);
Assert.assertEquals(result,6);
}
}
public class TestCase2 {

    @Test
public void testSum1(){
System.out.println("TestCase2测试testSum1");
int result = SumUtil.sum1(1,2);
Assert.assertEquals(result,3);
} @Test
public void testSum2(){
System.out.println("TestCase2测试testSum1");
int result = SumUtil.sum2(1,2,3);
Assert.assertEquals(result,6);
} }

然后创建一个TestSuite来统一测试两个类中的测试方法:

@RunWith(Suite.class)
@Suite.SuiteClasses({TestCase1.class,TestCase2.class})
public class TestSuite {
}

得到的结果是:

测试之前做的事
TestCase1测试testSum1
测试之后做的事
测试之前做的事
TestCase1测试testSum1
测试之后做的事
在测试之后的之后需要做的事
TestCase2测试testSum1
TestCase2测试testSum1
在测试之前的之前需要做的事

从这里也可以看到,@Before和@After注解会在其所在的类中,为每次测试执行一次

Junit的基础学习的更多相关文章

  1. Hibernate基础学习2

    Hibernate基础学习2 测试hibernate的一级缓存,事务以及查询语句 1)Hibernate的一些相关概念 hibernate的一级缓存 1)缓存是为了提高该框架对数据库的查询速度 2)一 ...

  2. Spring Framework基础学习

    Spring Framework基础学习 Core support for dependency injection,transaction management,web applications,d ...

  3. MacOS下SpringBoot基础学习

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"springboot"获取视频和教程资料! b站在线视 ...

  4. maven基础学习-为什么要用maven,帮助解决了什么问题,怎么解决的,希望以后学习每个知识点都可以这样问下自己

    maven基础学习 第1章 Maven介绍 1.1 什么是Maven 1.1.1 什么是Maven Maven 的正确发音是[ˈmevən],而不是"马瘟"以及其他什么瘟.Mave ...

  5. Maven基础学习笔记

    Maven基础学习笔记 下载链接 官网:https://maven.apache.org/ 所有版本:https://archive.apache.org/dist/maven/maven-3/ 阿里 ...

  6. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  7. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  8. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  9. HTML5零基础学习Web前端需要知道哪些?

    HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...

随机推荐

  1. 【题解】P1119 灾后重建

    题目地址 理解Floyed的本质 Floyed的本质是动态规划. 在地K次循环中,Floyed算法枚举任意点对(X,Y),在这之前,K从未做过任何点对的中点.因此,可以利用K为中转的路径长度更新. 在 ...

  2. MYSQL中文乱码以及character_set_database属性修改

    新安装MYSQL,还没有修改数据库系统编码. 之后由于创建数据库时候:create database db_name; 没有指定编码,之后发现乱码就修改各个属性之后还是乱码,便开始配置数据库属性,之后 ...

  3. centos7 python环境安装

    https://blog.csdn.net/LeonTom/article/details/81289326

  4. TensorRT&Sample&Python[uff_custom_plugin]

    本文是基于TensorRT 5.0.2基础上,关于其内部的uff_custom_plugin例子的分析和介绍. 本例子展示如何使用cpp基于tensorrt python绑定和UFF解析器进行编写pl ...

  5. 基于 HTML5 的工业互联网云平台监控机房 U 位

    前言 机柜 U 位管理是一项突破性创新技术--继承了 RFID 标签(电子标签)的优点的同时,完全解决了 RFID 技术(非接触式的自动识别技术)在机房 U 位资产监控场应用景中的四大缺陷,采用工业互 ...

  6. CentOS7.5脱机安装SQL Server 2017(NEW)

    发现搜到的都是在线下载安装的,都是只安装了mssql-server服务,没有mssql-server-agent服务.还以为linux下mssql没有agent服务呢.一番测试发现可以脱机安装,但是能 ...

  7. OracleSql语句学习(五)

    --数据库对象数据库对象包含:表,视图,索引,序列视图VIEN视图在SQL语句中体现的角色与表一样,但是视图并非真实存在的表,它只是对应一条查询语句的结果集 使用视图通常是为了重用子查询,简化SQL语 ...

  8. centos7之关于时间和日期以及时间同步的应用

    在CentOS 6版本,时间设置有date.hwclock命令,从CentOS 7开始,使用了一个新的命令timedatectl. 基本概念: 一.GMT.UTC.CST.DST 时间 UTC 整个地 ...

  9. 其它综合-企业级CentOS 7.6 操作系统的安装

    企业级CentOS 7.6版本安装过程 1. 环境: 使用的虚拟机软件是VMware,版本为 12 .(网上一搜一大推,在此不再演示.) 使用的ISO镜像为CentOS7.6.(自己也可以在网上搜镜像 ...

  10. ABP拦截器之UnitOfWorkRegistrar(一)

    ABP中UnitOfWorkRegistrar拦截器是整个ABP中非常关键的一个部分,这个部分在整个业务系统中也是用的最多的一个部分,这篇文章的主要思路并不是写如何使用ABP中的UnitOfWork, ...