一 JUnit4官网

http://junit.org/junit4/

二 JUnit4使用的基本知识

JUnit4在java项目中的应用:(这里我的IDE是eclipse)
项目属性-->java build path-->libraries-->add library-->JUnit

1、测试方法上必须使用@Test进行修饰

2、测试方法必须使用public void 进行修饰,不能带任何参数

3、新建一个源代码目录来存放我们的测试代码

4、测试类的包应该和被测试类保持一致

5、测试单元中的每个方法必须可以独立测试,测试间不能有任何的依赖

6、测试类使用Test作为类名的后缀。(不是必须)

7、测试方法使用test作为方法名的后缀。(不是必须)

例如下面就是一个类和其测试类:

public class Calculate {public int add(int a,int b){return a+b;}public int substract(int a,int b){return a-b;}public int mutilply(int a,int b){return a*b;}public int divide(int a,int b){return a/b;}
}
public class CalculateTest {@Testpublic void testAdd(){assertEquals(6, new Calculate().add(3, 3));}@Testpublic void testSubstract(){assertEquals(1,new Calculate().substract(3, 2));}@Testpublic void testMutilply(){assertEquals(9, new Calculate().mutilply(3, 3));}@Testpublic void testDivided(){assertEquals(3, new Calculate().divide(15, 5));}
}



三 测试失败的两种情况

Failure:

一般由单元测试使用的断言方法判断失败所引起的,这表示测试点发现了问题,就是说程序输出的结果和我们预期的不一样;

error:

是由代码异常所引起的,它可以产生于测试代码本身的错误,也可以是被测式代码中的一个隐藏的bug;

public class ErrorTest {//Failure@Testpublic void testMulti(){assertEquals(5, new Calculate().mutilply(3, 3));}//Error@Testpublic void divided(){assertEquals(3, new Calculate().divide(15, 0));}
}

注意:

测试用例不是用来证明你是对的,而是证明你没有错;

测试用力只是用来达到想要的预期结果,但是对逻辑性错误无能为力;

四 JUnit的运行流程

@BeforeClass

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

@AfterClass

所修饰的方法通常用来对资源的清理,如关闭数据库的连接;

@Before和@After

会在每个测试方法的前后各执行一次;

五 JUnit的常用注解

@Test:将一个普通的方法修饰成为一个测试方法

@Test(expected=XX.class) @Test(timeout=毫秒 )

--->用于测试死循环,性能测试

@BeforeClass:它会在所有的方法运行前被执行,static修饰

@AfterClass:它会在所有的方法运行结束后被执行,static修饰

@Before:会在每一个测试方法被运行前执行一次

@After:会在每一个测试方法运行后被执行一次

@Ignore:所修饰的测试方法会被测试运行器忽略

@RunWith:可以更改测试运行器 org.junit.runner.Runner

六 JUnit中测试套件的使用

1、测试套件就是组织测试类一起运行的

写一个作为测试套件的入口类,是一个空类,类中不能包含其他方法,更改测试运行器为Suite.class,将要测试的类作为数组传入到Suite.SuiteClasses({})中。

2、测试套件中也可以包含其他的测试套件,加载得方式和加载测试类是一样的()即类名.class;

@RunWith(Suite.class)
@Suite.SuiteClasses({TaskTest1.class,TaskTest2.class,TaskTest3.class})
public class SuiteTest {}

七 JUnit的参数化设置

1.更改默认的测试运行器为RunWith(Parameterized.class

2.声明变量来存放预期值 和结果值

3.声明一个返回值 为Collection的公共静态方法,并使用@Parameters进行修饰

4.为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值

@RunWith(Parameterized.class)
public class ParamTest {int expected=0;int input1=0;int input2=0;@Parameterspublic static Collection<Object[]> t(){return Arrays.asList(new Object[][]{{3,1,2},{4,2,2}});}public ParamTest(int expected,int input1,int input2) {this.input1=input1;this.input2=input2;this.expected=expected;}@Testpublic void test(){assertEquals(expected,new Calculate().add(input1, input2));}
}

JUnit4 使用详解相关推荐

  1. JUnit4单元测试、JUnit4使用详解、assertThat用法

    2019独角兽企业重金招聘Python工程师标准>>> 一.JUnit基本介绍 1.简介 JUnit是一个开放源码的.Java语言的单元测试框架,用于测试期望结果的断言(Assert ...

  2. JUnit4用法详解

    浅谈TDD 测试驱动开发,它是敏捷开发的最重要的部分.方法主要是先根据客户的需求编写测试程序,然后再编码使其通过测试.在敏捷开发实施中,开发人员主要从两个方面去理解测试驱动开发. a)在测试的辅助下, ...

  3. Junit4使用教程详解

    下载Junit4相关Jar包(一般eclipse等IDE已经集成): 资源链接: https://download.csdn.net/download/yl405001832/11580748 将ja ...

  4. Java单元测试之JUnit4详解

    2019独角兽企业重金招聘Python工程师标准>>> Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @B ...

  5. Java基础学习总结(24)——Java单元测试之JUnit4详解

    Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @BeforeClass 全局只会执行一次,而且是第一个运行 @Before  ...

  6. spring boot 实战 / 可执行war启动参数详解

    概述   上一篇文章<spring boot 实战 / mvn spring-boot:run 参数详解>主要讲解了spring boot 项目基于maven插件启动过程中借助profil ...

  7. Spring Boot 配置文件详解

    2019独角兽企业重金招聘Python工程师标准>>> 第二篇 : Spring Boot配置文件详解 文章首发于微信公众号<程序员果果> 地址:https://mp.w ...

  8. springboot主线程_Springboot对多线程的支持详解

    Springboot对多线程的支持详解 这两天看阿里的JAVA开发手册,到多线程的时候说永远不要用 new Thread()这种方式来使用多线程.确实是这样的,我一直在用线程池,到了springboo ...

  9. Spring深入理解之ComponentScan___@ComponentScan 详解

    Spring深入理解之ComponentScan 一.概述 ComponentScan顾名思义包扫描,底层其实就可以通过递归算法+反射将其装载成bean来实现的,实在开发过程中,Spring已经帮我们 ...

最新文章

  1. JS可以写操作系统?Windows 95被装进Electron App
  2. Idea+Maven+Jersey2+Tomcat配置Web服务
  3. linux 线程管理、同步机制等
  4. linux 文件隐藏权限,linux文件基本权限、默认权限、隐藏权限和ACL权限
  5. poj 2728 Desert King 01分数规划
  6. 50余家光伏企业竞标混战:0.52元最低价仍有利润!
  7. 重庆北大青鸟【学员心声】:有计划的做事情才能事半功倍
  8. 【R语言】结巴分词与词性提取(以“提取知乎问题标题的频繁词前100个形容词”实战为例)(3月25日学习笔记)
  9. 冯诺依曼计算机的英文简称,冯诺依曼计算机,von neumann machine,音标,读音,翻译,英文例句,英语词典...
  10. swift 使用Moya进行网络请求
  11. 湖南科技学院计算机代码,湖南科技学院计算机与信息科学系.doc
  12. Kotlin编译与Intrinsics检查
  13. 使用python爬虫爬取最好大学网大学排名实例
  14. word题注的大写变成小写
  15. 英语练习122 Time flies
  16. excel向程序发送命令时出现错误
  17. android 输入法 悬浮窗口,Android EditText悬浮在输入法之上
  18. 算法器之AVR的ISP烧录
  19. 安装MoveableType
  20. Python在Eclipse下的的开发插件PyDev使用教程

热门文章

  1. 人体五脏排毒最简单有效的方法
  2. Ubuntu18.04下realsense-ros的安装
  3. flot 自定义显示日期
  4. 万事皆有始亦有终---《The Matrix》影评之终结篇
  5. HTML5 respond.js
  6. mosquitto安装与使用
  7. 马建强老师谈如何做好PPT演讲演示
  8. html 穿越星空效果,CANVAS 光速穿越星空的效果
  9. windows 锁定计算机
  10. java:面板JPanel的使用