java单元测试Junit实践(一) Junit基础

1 篇文章 0 订阅

开发过程中,单元测试对于软件质量有着重大的影响,而且对于集成测试来说,经过完整单元测试的代码可以大大减少集成测试的工作量。

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 {

	@Test
	public 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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值