JUnit基本用法
2024-09-04 00:30:20
JUnit的一些注意事项:
- 测试方法必须使用@Test修饰
- 测试方法必须使用public void进行修饰,不能带参数
- 一般使用单元测试会新建一个test目录存放测试代码,在生产部署的时候只需要将test目录下代码删除即可
- 测试代码的包应该和被测试代码包结构保持一致
- 测试单元中的每个方法必须可以独立测试,方法间不能有任何依赖
- 测试类一般使用Test作为类名的后缀
- 测试方法使一般用test作为方法名的前缀
测试失败说明:
- Failure:一般是由于测试结果和预期结果不一致引发的,表示测试的这个点发现了问题
- error:是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中隐藏的bug
一些常用注解:
- @Test:将一个普通方法修饰成一个测试方法
- @Test(excepted=xx.class): xx.class表示异常类,表示测试的方法抛出此异常时,认为是正常的测试通过的
- @Test(timeout=毫秒数) :测试方法执行时间是否符合预期
- @BeforeClass: 会在所有的方法执行前被执行,static方法 (全局只会执行一次,而且是第一个运行)
- @AfterClass:会在所有的方法执行之后进行执行,static方法 (全局只会执行一次,而且是最后一个运行)
- @Before:会在每一个测试方法被运行前执行一次
- @After:会在每一个测试方法运行后被执行一次
- @Ignore:所修饰的测试方法会被测试运行器忽略
- @RunWith:可以更改测试运行器org.junit.runner.Runner
- Parameters:参数化注解
参数化测试:
对于一个方法需要进行多种场景进行测试时,可以通过参数化测试减少测试的工作量。用法如下:
1 package junit.util;
2
3 import static org.junit.Assert.assertEquals;
4
5 import java.util.Arrays;
6 import java.util.Collection;
7
8 import org.junit.Test;
9 import org.junit.runner.RunWith;
10 import org.junit.runners.Parameterized;
11 import org.junit.runners.Parameterized.Parameters;
12
13 @RunWith(Parameterized.class)
14 public class ParameterTest {
15
16 /**
17 * 1、更改测试运行器为RunWith(Parameterized.class)
18 * 2、声明变量用来存放预期值与结果值
19 * 3、声明一个返回值为Collection的公共静态方法,并使用@Parameters进行修饰
20 * 4、位测试类声明一个带有参数的公共构造方法,并在其中为声明变量赋值
21 */
22
23 int except; //用来存储预期结果
24 int input1; //用来存储第一个输入参数
25 int input2; //用来存储第二个输入参数
26
27 @Parameters
28 public static Collection<Object[]> initTestData(){
29 return Arrays.asList(
30 new Object[][]{
31 {3,1,2},
32 {10,5,5},
33 {6,4,2},
34 {7,3,4}}
35 );
36 }
37
38 public ParameterTest(int except,int input1,int input2){
39 this.except = except;
40 this.input1 = input1;
41 this.input2 = input2;
42 }
43
44
45
46
47
48 @Test
49 public void testAdd() {
50 assertEquals(except, new Claculate().add(input1, input2));
51 }
52
53 }
最新文章
- js ---- 时间格式
- CoreData
- BZOJ 3505 【Cqoi2014】 数三角形
- JavaWeb项目连接Oracle数据库
- [Leetcode][JAVA] Word Ladder
- 关于Redis的启动过程
- Python之路【第五篇】:面向对象和相关
- eclipse修改字体
- cf459C Pashmak and Buses
- Entityframework 伪CodeFirst开发模式应用于Sqlite数据库
- ThinkPHP 3.1.2 控制器的模块和操作
- c++设置输出精度
- Linux下同时运行不同版本的qt程序
- sql优化-提防错误关联
- 点(.)运算符和箭头(->;)运算符的区别
- Python Web-第三周-Networks and Sockets(Using Python to Access Web Data)
- 项目Alpha冲刺Day2
- C++基础知识--DAY1
- 打开KVM Console的一些注意事项
- Microsoft Visual Studio2013安装及单元测试
热门文章
- hdu1213 并查集不压缩
- J20170604-hm
- 小记 vue 打包(build)需要注意的一些事
- [Usaco2018 Open]Disruption
- 题解报告:hdu 5695 Gym Class(拓扑排序)
- ora-20000 unable to analyze
- CF864D Make a Permutation!
- anime.js 实战:实现一个带有描边动画效果的复选框
- 【DVWA】【SQL Injection(Blind)】SQL盲注 Low Medium High Impossible
- Java学习4_一些基础4_输入输出_16.5.7