java单元测试Junit实践(一) Junit基础
来源:互联网 发布:霍金对人工智能的看法 编辑:程序博客网 时间:2024/05/29 23:48
开发过程中,单元测试对于软件质量有着重大的影响,而且对于集成测试来说,经过完整单元测试的代码可以大大减少集成测试的工作量。
JUnit是一个Java语言的单元测试框架,JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework), JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。Junit 目前主要是Junit4,本次实践都使用junit4
一、目标
了解Junit测试包如何使用
对于junit中的一些基本annotation进行验证
二、实践步骤
1、创建一个java工程,生成一个类,取名为Calc。 Calc里面主要有2个方法,分别是计算 “加法”,“除法”。
package com.study.junit;public class Calc {int add(int x, int y){return x+y;}int divide(int x, int y){return x/y;}}
2、在工程上,右键new-》Junit Test Case 选中
在弹出的菜单中,填入测试类名称( 一般用 被测对象类名+Test 作为测试类名),配置好被测对象类名,举例如下
3、编写测试方法
package com.study.junit;import static org.junit.Assert.*;import static org.hamcrest.Matchers.*;import org.junit.After;import org.junit.AfterClass;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Ignore;import org.junit.Test;public class CalcTest {@Testpublic void testAdd() {int z = new Calc().add(10, 20);assertEquals(30, z);assertThat("hello", z, is(30));assertThat("range",z, allOf( lessThan(40),greaterThan(20)));System.out.println("after run");}@Test(timeout=100)//打上@Test 标记,才会认为是要进行测试的对象,否则不测试//在()中填入 抛出异常内容,也可以测试是否抛出// timeout=100, 表示期望下午方法在100毫秒内结束public void testDivide(){for(int j=0; j<1000; j++){int z= new Calc().divide(8, 2);}//assertThat("divide", z , is (4));System.out.println("run");}}测试类里面, 要测试的方法,需要打上@Test 标志,如果没有打上的,不会被作为测试项执行。@Test(timeout=100) 表示这个测试期望在100毫秒内执行完毕,否则算测试不通过。
4、运行测试
在测试类上,右键-》run as ->Junit Test
就可以进行单元测试了。测试信息如下:
Runs 这里体现了执行了多少个测试, 也就是打上@Test 标记的测试项。 Error 表示 执行测试项目中出错了,表示编写的测试类运行中出现故障。 Failure 表示测试类正常运行完成后,有多少测试项目与预期不同。
assertThat("hello", z, is(30)); 表示我们期望 z 的值是 30,如果计算出来的 z值与期望值不符,那么这个测试项目就没有通过 failure。 “hello”,是一个字符串,用来标记一个判别的,在有很多测试项的时候,可以很快发现没有通过测试项的位置。
assertEquals(30, z); 也是用来判别实际值与预期值的差别的。 assertThat 是junit 4 出现的写法,使得测试条件的编写更加的贴近我们平时的描述性语法。
5、 几个annotation说明
@Test //表明这是一个测试项目
@Ignore //暂时忽略掉,当测试条件不具备的时候,可以使用这个标识
@After //在每一个方法之后执行
@Before //在每一个方法之间执行
@AfterClass //在全部执行之后执行一次 必须是static 当需要提供公共资源的时候
@BeforeClass //在全部执行之前执行一次 必须是static 需要进行资源释放的时候
@AfterClass和@BeforeClass 的使用场景:比如测试很多项目,在测试开始之前,我们需要建立数据库连接,并且获取数据库操作的seesion,
而在全部的操作结束后,我们要释放数据库seesion。 需要注意的是这两个必须要用static方法。
6、多个类的测试用例如何一起测试
一般情况下,我们会有很多类需要测试,而且希望一次性都测试一遍,这个时候可以这样操作: 工程上右键-》run as
进入运行配置界面
这样可以把需要测试的项目都一起进行运行测试。
三、小结
Junit 是单元测试的最流行工具,提供了比较丰富的执行测试调度的方式。对于junit4测试,如果使用assertThat 方式,需要引入下面的jar包,最好连junit包,也使用自己的。Junit的jar包,如下:
- java单元测试Junit实践(一) Junit基础
- Java单元测试Junit(一)Junit介绍及使用
- Java单元测试(JUnit)
- java基础巩固----Junit单元测试
- JUnit + Mockito 单元测试(一)
- JUnit + Mockito 单元测试(一)
- java单元测试(使用junit)
- java单元测试(使用junit)
- java单元测试(使用junit)
- java单元测试(使用junit)
- java 单元测试教程(junit)
- Java的单元测试(Junit)
- JUnit单元测试基础要点
- Junit单元测试基础
- JUnit单元测试基础要点
- JUnit单元测试基础要点
- JUnit单元测试基础
- Android基础:单元测试JUnit
- Lua——分类目录
- JavaScript的构造函数原理
- 渣渣的第一天
- 数组数据编码格式转换
- IOS 移动端视频播放不全屏
- java单元测试Junit实践(一) Junit基础
- 我读《基于OpenFlow的视频用户QoE优化研究》
- 对六种平衡树的研究与探索【全面】【更新中】
- codeforces 757 B. Bash's Big Day
- 申请免费的https证书-Let's Encrypt
- win32 python3.5 下安装sklearn
- 为hadoop集群设置静态IP
- 递归 与 迭代 的区别对比!
- Net设计模式实例之中介者模式(Mediator Pattern)