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

一、组成部分:

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. [LeetCode]2. 两数相加

    题目链接:https://leetcode-cn.com/problems/add-two-numbers/ 题目描述: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 ...

  2. python之os

    os 系统级别的操作 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell ...

  3. SpringBoot整合RabbitMQ-消息可靠性投递

    本系列是学习SpringBoot整合RabbitMQ的练手,包含服务安装,RabbitMQ整合SpringBoot2.x,消息可靠性投递实现等三篇博客. 学习路径:https://www.imooc. ...

  4. Activiti开发案例之activiti-app更换数据源

    前言 由于Activiti 默认使用的数据库是H2数据库,重启服务后相关数据会丢失.为了永久保存,所以要配置关系型数据库,这里我们选择 SqlServer ,有钱任性. 环境 Activiti6,Sq ...

  5. 用JS解决url地址中参数乱码的问题

    var url = window.location.herf;//获取url地址 var obj = {}; //最后输出的对象 var reg = /\?/; //要匹配的正则表达式 if(url. ...

  6. Shell命令-文件压缩解压缩之tar、unzip

    文件及内容处理 - tar.unip 1.tar:打包压缩命令 tar命令的功能说明 tar 命令常用语用于备份文件,tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件 ta ...

  7. USB安装centos6系统(centos7需要换软件)

    一.下载系统镜像 二.下载安装软碟通软件UltraISO 三.插入U盘制作启动盘 1.用软碟通打开镜像文件:文件-->打开 2.写入映像:启动-->写入硬盘映像 3.等待写入完成 四.系统 ...

  8. Python——Django-manage.py的内容

    在项目的根目录下(也就是有manage.py的那个目录),运行: python3 manage.py runserver IP:端口--> 在指定的IP和端口启动 python3 manage. ...

  9. vue 点击当前元素添加class 去掉兄弟的class 获取当前点击元素的文字

    点击当前标签给其添加class,兄弟标签class删除 然后获取当前点击元素的文字 演示地址: https://xibushijie.github.io/static/addClass.html &l ...

  10. Jupyter Notebook(推荐使用Anaconda安装)

    一.Jupyter Notebook介绍 1.简介 Jupyter Notebook是基于网页的用于交互计算的应用程序.其可被应用于全过程计算:开发.文档编写.运行代码和展示结果. 简而言之,Jupy ...