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包,如下:

0 0
原创粉丝点击