Junit4知识梳理
一、junit官网
junit4:http://junit.org/junit4/
junit5:http://junit.org/junit5/
二、github
junit4: https://github.com/junit-team/junit4
junit5: https://github.com/junit-team/junit5
三、下载和安装
https://github.com/junit-team/junit4/wiki/Download-and-Install
三、junit4运行流程
| @Test |
讲一个普通的方法修饰成测试方法 |
| @BeforeClass |
修饰的方法会在所有的方法调用前被调用, 而且该方法是静态的,所以当测试类被加载后就会运行他, 而且在内存中他只会存在一份实例,比较适合加载配置文件 |
| @AfterClass | 修饰的方式通常用来对资源的清理,如关闭数据库的连接 |
| @Before | 会在每个@Test修饰的方法的前各执行一次 |
| @After | 会在每个@Test修饰的方法的后各执行一次 |
三、junit4常用注解
1.@Test
1)@Test的两个属性
| 属性名 | 作用 | 实例 |
| expected | 声明了该测试方法应该抛出一个异常,如果抛出了说明测试成功 | @Test{expected=XX.class} |
| timeout |
设置测试方法的超时时间,超过时间测试方法就会停止 适用场景举例:比如有一个循环代码,循环控制条件不太好控制,这里 使用timeout就避免了一直等待 |
@Test{timeout=毫秒} |
2.@Ignore
代表所修饰的测试方法会被测试运行器所忽略
3.@RunWith
可以更改测试运行器,自定义自己的运行器(必须继承org.junit.runner.Runner)
四、断言的使用
具体使用方法可参考官方文档:https://github.com/junit-team/junit4/wiki/Assertions
五、测试套件的使用
当有多个测试类,一个一个测试太麻烦了,可以使用如下测试套件
package com.dechy.test; import org.junit.runner.RunWith;
import org.junit.runners.Suite; @RunWith(Suite.class)
@Suite.SuiteClasses({TaskTest1.class,TaskTest2.class,TaskTest3.class})
public class SuiteTest {
/**
* 1.测试套件就是组织测试类一起运行
*
* 写一个作为测试套件的入口类,这个类中不包含其他方法
* 更改测试运行器Suite.class
* 将要测试的类作为数组传到Suite.SuiteClasses({})
*/ }
六、junit的参数化设置
package com.dechy.util; import static org.junit.Assert.*; import java.util.Arrays;
import java.util.Collection; import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class)
public class ParameterTest {
/*
* .更改默认的测试运行器为RunWith(Parameterized.class)
* .声明变量来存放预期值 和结果值
* .声明一个返回值 为Collection的公共静态方法,并使用@Parameters进行修饰
* .为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值
*/
int expected =;
int input1 = ;
int input2 = ; @Parameters
public static Collection<Object[]> t() {
return Arrays.asList(new Object[][]{
{,,},
{,,}
}) ;
} public ParameterTest(int expected,int input1,int input2) {
this.expected = expected;
this.input1 = input1;
this.input2 = input2;
} @Test
public void testAdd() {
assertEquals(expected, new Calculate().add(input1, input2));
} }
Junit4知识梳理的更多相关文章
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- solr DIH 知识梳理
solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...
- Anliven - 基础知识梳理汇总 - 软件测试
基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...
- [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型
引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...
- java基础知识梳理
java基础知识梳理 1 基本数据类型
随机推荐
- 远程批量获取Linux和Windos操作系统版本(内核)
在不登录远程主机的情况下,可以查看远程主机的服务器操作系统版本(内核). 脚本执行前提: 1.拷贝check_snmp到脚本执行的主机中或在此主机中安装nagios; 2.保持list.txt中只有一 ...
- python中的全局变量和局部变量(转)
python中,对于变量作用域的规定有些不一样. 在诸如C/C++.java等编程语言中,默认在函数的内部是能够直接訪问在函数外定义的全局变量的,可是这一点在python中就会有问题.以下是一个样例. ...
- TensorFlow 辨异 —— tf.add(a, b) 与 a+b(tf.assign 与 =)、tf.nn.bias_add 与 tf.add(转)
1. tf.add(a, b) 与 a+b 在神经网络前向传播的过程中,经常可见如下两种形式的代码: tf.add(tf.matmul(x, w), b) tf.matmul(x, w) + b 简而 ...
- 当try-catch-finally代码块遇上return,代码执行流程是怎样
这里打算用一个Java读取文件内容的例子来测试,文件存在,不抛异常,文件不存在,则抛出FileNotFoundException: Java读取文件代码如下: /** * 根据路径和文件名获取内容 * ...
- 从后台获取的数据渲染到页面中的dom操作
很多情况下页面dom都是从后台拼接字符串添加生成的新的dom元素,在编辑器中不能看到,只能通过检查看到页面的dom结构,但是这时候会发生一个问题,就是如果使用jQuery无法进行dom操作,事件和方法 ...
- echarts 树图
1 事件:事件绑定,事件命名统一挂载到require('echarts/config').EVENT(非模块化为echarts.config.EVENT)命名空间下,建议使用此命名空间作为事件名引用, ...
- python list [:1]
python 切片slice 1.补充: A = np.ones([, , ]) B = np.ones([, ]) C = A*B[:, None, :] C.shape = 2,1,4 https ...
- CRTD异常案例及原因
错误案例: SELECT DEMANDLINEID,SUPPLYORDERID,DEMANDORDERID,QTYALLOCATED,ITEM, A.* FROM ABPPMGR.SUPPLYDMD ...
- Charles界面介绍及使用方法
本随笔主要内容: 一.Charles界面介绍 二.Charles使用 1.会话(Repeat.Focus.Compare.黑白名单等) 2.模拟请求做mock,使用断点.Map或Rewrite 3.指 ...
- streaming窗口操作
之前一直对窗口操作不太理解.认为spark streaming本身已经是分片计算,还需要窗口操作干啥. 窗口操作最为简单易懂的场景就是,在M时间间隔计算一次N时间内的热搜.当M=N的时候,就像上述所说 ...