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

一、组成部分:

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. WebApi的版本控制

      using System; using System.Collections.Generic; using System.Linq; using System.Web.Http; using Sy ...

  2. myBatista批量查询和插入

    <select id="queryCompanyByDistrict" resultType="WyCompany"> SELECT * FROM ...

  3. mysql c connector 多条sql语句执行示例

      //  假设参数 sql已经包含多条sql语句.如 sql = "insert into table1(...) values(...); update table2 set a=1;& ...

  4. codeforces gym #102082C Emergency Evacuation(贪心Orz)

    题目链接: https://codeforces.com/gym/102082 题意: 在一个客车里面有$r$排座位,每排座位有$2s$个座位,中间一条走廊 有$p$个人在车内,求出所有人走出客车的最 ...

  5. linux系统安装redis

    redis的下载安装教程 1.进入到linux指定目录中 cd /usr/local        路径看你自己情况 2.下载redis,执行如下命令: wget http://download.re ...

  6. 【学习总结】Git学习-本地仓库覆盖式更新对于Git仓库的影响以及pull/push到GitHub

    < 许久不用Git之后的探索 > 准备日常更新自己的GitHub了.但是编写的文件平时不放在Git仓库路径下. 故测试覆盖式更新对于仓库是否有影响 直接说结论: 通过对已有库的测试发现覆盖 ...

  7. Spring boot 的自动配置

    Xml 配置文件 日志 Spring Boot对各种日志框架都做了支持,我们可以通过配置来修改默认的日志的配置: #设置日志级别 logging.level.org.springframework=D ...

  8. ABP中的拦截器之AuditingInterceptor

    在上面两篇介绍了ABP中的ValidationInterceptor之后,我们今天来看看ABP中定义的另外一种Interceptor即为AuditingInterceptor,顾名思义就是一种审计相关 ...

  9. python 10道面试陷阱题目

  10. 如何将JPG格式的图片转换成PNG格式

    study from : https://jingyan.baidu.com/article/6079ad0e63a4fc28ff86db37.html