我理解的白盒测试(二)

本文介绍了如何使用JUnit进行白盒测试,包括添加JUnit4库,创建测试类,设置setUp()和tearDown(),超时测试,异常测试以及参数测试。通过详细的步骤和示例,帮助读者掌握JUnit在自动化测试中的应用。

Junit使用

用于编写和运行可重复的自动化测试的开源测试框架

JUnit4应用便捷、广泛

应用于Java

添加Junit4

1.创建工程,或导入已有工程,按步骤引用Junit4
在这里插入图片描述
2.点击Sync Now将修改同步
在这里插入图片描述

创建测试类

1.打开待测试文件

public class Calculator{
	private static int result;	//静态变量,用来存储运行结果
	public void add(int n){
		result = result + n;
	}
	public void substract(int n){
		restlt = result - 1;	//Bug:正确的应该是result = result - n
	}
	public void multiply(int n){
		//此方法尚未写好
	}
	public void divide(int n){
		result = result / n;
	}
	public int square(int n){
		return n * n;
	}
	public void squareRoot(int n){
		for(; ;);		//Bug:死循环
	}
	public void clear(){
		result = 0;		//将结果清零
	}
	public int getRestlt(){
		return result;
	}
}

2.在待测代码空白处右击,选择Go To -> Test
在这里插入图片描述
3.点击Create New Test…
在这里插入图片描述
4.创建测试用例
setUp():在每个测试开始前执行一次,执行次数与用例个数相等,做一些测试准备工作
tearDown():在每个测试结束后执行一次,执行次数与用例个数相等,做一些测试回收工作
在这里插入图片描述
5.选择测试用例保存路径
在这里插入图片描述
6.测试类CalculatorTest已经自动生成
在这里插入图片描述
@是注解,可以在后面添加(“各种不同情况注释”)
@Test:执行该测试方法
@Ignore:暂时忽略该测试方法
@Before:在所有测试方法之前,不能是static
@After:在所有测试方法之后,不能是static
@BeforeClass:必须是public static void,即公开、静态、无返回。这个方法只会运行一次(Eclipse)
@AfterClass:必须是public static void,即公开、静态、无返回。这个方法只会运行一次(Eclipse)
在这里插入图片描述
7.修改测试用例
测试方法必须是public void,即公共、无返回数据。可以抛出异常。

assertEquals():判断实际结果与期望值是否相等,第一个值为期望值,第二个为实际结果
在这里插入图片描述
8.在测试用例空白处右击运行
在这里插入图片描述
9.用例运行结果
双击失败的用例名,直接定位到报错语句
在这里插入图片描述

超时测试

待测试方法:

public void squareRoot(int n){
	for(; ;);		//Bug:死循环
}

测试用例:

@Test(timeout = 10)
public void testSquareRoot() throws Exception{
	calc.add(2);
	calc.squareRoot(2);
	assertEquals(2, calc.getResult());
}

在@Test(timeout = 10)中设置超时值,单位为毫秒,即测试能够运行的最长时间:如果时间超过,测试就会失败,并抛出异常。

异常测试

待测试方法:

public void divide(int n){
	result = result / n;
}

测试用例:

@Test(exception = Exception.class)
public void testDivide() throws Exception{
	calc.add(8);
	calc.divide(0);
}

在@Test(expected = *.class)中抛出异常,即当除数为0时,该方法抛出异常,则测试通过

参数测试

待测试方法:

public int square(int n){
	return n * n;
}

测试用例:
1.为测试方法添加特殊的运行器(@RunWith后面添加运行器)

//指定运行器对整个类进行修饰
@RunWith(Parameterized.class)
public class CalculatorTest1{

2.声明一些变量,来存放期望值,参数等

private int expected = 0;
private int num = 0;

3.声明一个含有参数的构造函数,并初始化之前的变量

public CalculatorTest1(int expected, int num){
	this.num = num;
	this.expected = expected;

4.声明一个静态的方法,用来准备数据

//数据准备,该方法必须是@Parameters修饰
//该方法必须是public static
//该方法返回Collection集合
//该方法无参数
@Parameters
public static Collection actualData(){
	return Arrays.asList(new Object[][]{
			{4,2},
			{10,3},		//错误
			{7,2}		//错误

5.编写测试方法,进行测试

@Test
public void testSquare(){
	assertEquals(expected, calc.square(num));
}

测试结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值