Junit 学习笔记
Junit 学习笔记
1. 编写测试用例时需要注意
- 测试方法上必须使用
@Test进行修饰 - 测试方法必须使用
public void进行修饰,不能带任何参数 - 新建一个车源代码目录来存放我们的测试代码
- 测试类的包应该和被测试类保持一致
- 测试单元中的每个方法必须可以独立测试,测试方向间不能有任何依赖
- 测试类使用
Test作为类名的后缀(不是必须) - 测试方法使用
Test作为方法名的前缀(不是必须)
2. 出现结果分析
Failure一般由单元测试使用的断言方法判断失败所引起,这表示测试点发现了问题,就是说程序输出的结果和我们预期的不一样。error是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏 bug- 测试用例不是用来证明你是对的,而是用来证明你没有错(即测试用例用来达到想要的预期结果,但对于逻辑错误无能为力)。
3. Junit 运行流程
举个例子:
public class JunitFlowTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("this is beforeClass...");
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("this is afterClass...");
}
@Before
public void setUp() throws Exception {
System.out.println("this is before...");
}
@After
public void tearDown() throws Exception {
System.out.println("this is after");
}
@Test
public void test1() {
System.out.println("this is test1...");
}
}
输出结果如下:
---- IntelliJ IDEA coverage runner ----
sampling ...
include patterns:
com\.test\.util\..*
exclude patterns:this is beforeClass...
this is before...
this is test1...
this is after
this is afterClass...
Process finished with exit code 0
解释如下:
@BeforeClass修饰的方法会在所有方法被调用前被执行,而且该方法是静态的,所以当测试类被加载后接着就会运行它,而且在内存中它只回存在一份实例,它比较适合加载配置文件@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接@Before和@After会在每个测试方法的前后各执行一次
4. Junit 常用注解
@Test:将一个普通的方法修饰成为一个测试方法@Test(expected=XX.class):用来捕获异常@Test(timeout=毫秒):到时间后停止测试(用来测试一些循环很久的语句)
@BeforeClass:它会在所有的方法运行前被执行,static 修饰@AfterClass:它会在所有的方法运行结束后被执行,static 修饰@Before:会在每一个测试方法被运行前执行一次@After:会在每一个测试方法运行后被执行一次@Ignore:所修饰的测试方法会被测试运行器忽略@RunWith:可以更改测试运行器org.junit.runner.Runner
举个例子:
public class AnnotationTest {
@Test(expected = ArithmeticException.class)
public void testDivide() {
assertEquals(3, new Calculate().divide(6, 0));
}
@Test(timeout = 2000)
@Ignore
public void testWhile() {
while (true) {
System.out.println("run forever...");
}
}
@Test(timeout = 3000)
public void testReadFile() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
5. Junit 测试套件的使用
测试套件就是组织测试类一起运行的。
步骤:
- 写一个作为测试套件的入口类,这个类里不包含其他的方法
- 更改测试运行器
Suite.class - 将要测试的类作为数组传入到
Suite.SuiteClasses({})
例子:
@RunWith(Suite.class)
@Suite.SuiteClasses({TaskTest1.class, TaskTest2.class, TaskTest3.class})
public class SuiteClasses {
}
6. Junit 参数化设置
步骤
- 更多默认的测试运行器为
RunWith(Parameterized.class) - 声明变量来存放预期值和结果值
- 声明一个返回值为 Collection 的公共静态方法,并使用
@Parameters进行修饰 - 为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值
例子
ParameterTest.java:
@RunWith(Parameterized.class)
public class ParameterTest {
int expected = 0;
int input1 = 0;
int input2 = 0;
@Parameterized.Parameters
public static Collection<Object[]> t() {
return Arrays.asList(new Object[][] {
{3, 1, 2},
{4, 2, 2}
});
}
public ParameterTest(int expected, int input1, int input2) {
this.expected = expected;
this.input1 = input1;
this.input2 = input2;
}
@Test
public void add() {
assertEquals(expected, new Calculate().add(input1, input2));
}
}
Junit 学习笔记的更多相关文章
- junit学习笔记
junit编程规范 测试方法上必须使用@Test进行修饰 测试方法必须使用public void 进行修饰,不能带任何的参数 新建一个源代码目录 测试类的包应该和被测试类保持一致 测试单元中的每个方法 ...
- junit学习笔记(二):hamcrest和TestSuit
1. hamcrest hamcrest可以有效增加junit的测试能力,用一些对通俗语言来进行测试. Hamcrest 是一个测试的框架,它提供了一套通用的匹配符 Matcher,灵活使用这些匹配符 ...
- JUnit学习笔记-0-JUnit启动类
[说明]:本文基于JUnit4.13版本代码,JDK1.8.0_151环境,使用工具为Eclipse,版本为Oxygen.1a Release (4.7.1a) [图示]: [正文]:JUnit4.1 ...
- Junit学习笔记之五:MockMVC
原文:https://blog.csdn.net/xiao_xuwen/article/details/52890730 随着RESTful Web Service的流行,测试对外的Service是否 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 积极主动敲代码,使用Junit学习Java程序设计
积极主动敲代码,使用JUnit学习Java 早起看到周筠老师在知乎的回答软件专业成绩很好但是实际能力很差怎么办?,很有感触. 从读大学算起,我敲过不下100本程序设计图书的代码,我的学习经验带来我的程 ...
- [原创]java WEB学习笔记109:Spring学习---spring中事物管理
博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好 ...
- [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Android自动化学习笔记:编写MonkeyRunner脚本的几种方式
---------------------------------------------------------------------------------------------------- ...
随机推荐
- linux 安装nginx -查看 linux的环境变量
我发现在linux上面安装linux很简单 在CentOS release 6.5 上面先看一下操作系统的版本: lsb_release -a 直接执行 yum install nginx 系统自动的 ...
- Vue学习手记04-跨域问题
01-安装axios,指令(npm install --save axios)02-解决跨域问题 在config=>中创建一个新的文件proxyConfig.js module.exports ...
- Android绘图通用第三方控件
https://github.com/ddanny/achartengine CodePull requests 2SecurityInsights Charting library fo ...
- ubuntu14.04 rabbitmq重启丢失用户信息
一.rabbitmq数据是根据当前hostname作为node节点作为数据名保存 二.添加rabbimq用户sudo rabbitmqctl add_user tlwlmy tlwlmysudo ra ...
- 用python查看文件是否存在的三种方式
目录 1.使用os模块 判断文件是否可做读写操作 2.使用Try语句 3. 使用pathlib模块 正文 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做 ...
- Js 实现局部打印功能
1.当前页面 var bodyHtml = window.document.body.innerHTML; window.document.body.innerHTML = printHtml;//p ...
- Java API操作Hadoop可能会遇到的问题以及解决办法
https://www.zifangsky.cn/1292.html Could not locate Hadoop executable: xxx\bin\winutils.exe 1 2 3 ...
- CRISP-DM
CRISP-DM (cross-industry standard process for data mining), 即为"跨行业数据挖掘标准流程". 此KDD过程模型于1999 ...
- Centos7之pacemaker高可用安装配置详解
申明: centos7的pacemaker与6使用的方法不一致,即使用centos6.x的方法在centos7.x上面配置pacemaker不能成功. 因此openstack 上面的centos7.1 ...
- Quartz.Net入门 - Net作业调度
背景 很多时候,项目需要在不同时刻,执行一个或很多个不同的作业. Windows执行计划这时并不能很好的满足需求了,迫切需要一个更为强大,方便管理,集群部署的作业调度框架. 介绍 Quartz一个开源 ...