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

一、组成部分:

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. phpstudy运行时出现没有安装VC库

    系统默认的VC库是安装在C:\Program Files\Common Files\microsoft shared\VC的文件夹里,当运行PHP Study是出现如下的提示: 可以到下面的网站去下载 ...

  2. 转://11g之后,通过v$wait_chains视图诊断数据库hang和Contention

    1g之前,通常我们数据库hang住了之后,我们会对数据库做hang analyze来进行分析,在11g之后,我们可以通过一个新的视图v$wait_chains来诊断数据库hang和contention ...

  3. mysql中group by和order by混用 结果不是理想结果(转)

    文章转自 https://www.cnblogs.com/myphper/p/3767572.html 在使用mysql排序的时候会想到按照降序分组来获得一组数据,而使用order by往往得到的不是 ...

  4. 3-STM32带你入坑系列(自己封装点亮一个灯的库--Keil)

    2-STM32带你入坑系列(点亮一个灯--Keil) 首先建一个stm32f103x.h的文件,然后 #include "stm32f103x.h" 还记得上一节 现在呢就是做一个 ...

  5. STL中的set使用方法详细!!!!

    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...

  6. 这段代码,c 1秒,java 9秒,c# 14秒,而python。。。

    哎,不得不说最近见得键盘侠客太多了,做程序员没两天总是喜欢上嘴唇触天,下嘴唇碰地的吹. 自己分明都没用过几门语言,就对各门语言评头论足说三道四,这么语言多好那门语言有多烂. 可能是随着时间也变得没那么 ...

  7. 30分钟了解Springboot整合Shiro

    项目结构截图: 项目在结构上没有任何特殊之处,基本就是MVC的传统结构重点需要关注的是3个Entity类.2个Controller类和1个Config类. 首先,提供pom的完整文档结构: <p ...

  8. 初识:java虚拟机的内存划分

    什么是内存? 内存是计算机中的重要原件,临时存储区域,作用是运行程序.我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存.Java虚拟机要运行程序 ...

  9. 循环语句之for循环

    什么是循环语句? 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否 ...

  10. 好坑吖,几乎GG,关于Nginx和supervisor的配置

    从没想过部署个站点居然这么费劲.这还是搞了好多回且环境都具备的前提一下. 不过问题还是挺刁钻的,下面详细说一下. 1.net core编译少dll文件问题 发布到服务器上执行dotnet FileSe ...