JUnit4 使用详解
一 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 使用详解相关推荐
- JUnit4单元测试、JUnit4使用详解、assertThat用法
2019独角兽企业重金招聘Python工程师标准>>> 一.JUnit基本介绍 1.简介 JUnit是一个开放源码的.Java语言的单元测试框架,用于测试期望结果的断言(Assert ...
- JUnit4用法详解
浅谈TDD 测试驱动开发,它是敏捷开发的最重要的部分.方法主要是先根据客户的需求编写测试程序,然后再编码使其通过测试.在敏捷开发实施中,开发人员主要从两个方面去理解测试驱动开发. a)在测试的辅助下, ...
- Junit4使用教程详解
下载Junit4相关Jar包(一般eclipse等IDE已经集成): 资源链接: https://download.csdn.net/download/yl405001832/11580748 将ja ...
- Java单元测试之JUnit4详解
2019独角兽企业重金招聘Python工程师标准>>> Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @B ...
- Java基础学习总结(24)——Java单元测试之JUnit4详解
Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @BeforeClass 全局只会执行一次,而且是第一个运行 @Before ...
- spring boot 实战 / 可执行war启动参数详解
概述 上一篇文章<spring boot 实战 / mvn spring-boot:run 参数详解>主要讲解了spring boot 项目基于maven插件启动过程中借助profil ...
- Spring Boot 配置文件详解
2019独角兽企业重金招聘Python工程师标准>>> 第二篇 : Spring Boot配置文件详解 文章首发于微信公众号<程序员果果> 地址:https://mp.w ...
- springboot主线程_Springboot对多线程的支持详解
Springboot对多线程的支持详解 这两天看阿里的JAVA开发手册,到多线程的时候说永远不要用 new Thread()这种方式来使用多线程.确实是这样的,我一直在用线程池,到了springboo ...
- Spring深入理解之ComponentScan___@ComponentScan 详解
Spring深入理解之ComponentScan 一.概述 ComponentScan顾名思义包扫描,底层其实就可以通过递归算法+反射将其装载成bean来实现的,实在开发过程中,Spring已经帮我们 ...
最新文章
- JS可以写操作系统?Windows 95被装进Electron App
- Idea+Maven+Jersey2+Tomcat配置Web服务
- linux 线程管理、同步机制等
- linux 文件隐藏权限,linux文件基本权限、默认权限、隐藏权限和ACL权限
- poj 2728 Desert King 01分数规划
- 50余家光伏企业竞标混战:0.52元最低价仍有利润!
- 重庆北大青鸟【学员心声】:有计划的做事情才能事半功倍
- 【R语言】结巴分词与词性提取(以“提取知乎问题标题的频繁词前100个形容词”实战为例)(3月25日学习笔记)
- 冯诺依曼计算机的英文简称,冯诺依曼计算机,von neumann machine,音标,读音,翻译,英文例句,英语词典...
- swift 使用Moya进行网络请求
- 湖南科技学院计算机代码,湖南科技学院计算机与信息科学系.doc
- Kotlin编译与Intrinsics检查
- 使用python爬虫爬取最好大学网大学排名实例
- word题注的大写变成小写
- 英语练习122 Time flies
- excel向程序发送命令时出现错误
- android 输入法 悬浮窗口,Android EditText悬浮在输入法之上
- 算法器之AVR的ISP烧录
- 安装MoveableType
- Python在Eclipse下的的开发插件PyDev使用教程