软件测试 实验(一) Junit4测试基础+参数化测试+模块化
程序员文章站
2022-07-12 14:06:53
...
参数化测试(Parameters):
为测试程序健壮性,可能需要模拟不同的参数对方法进行测试,如果在为每一个类型的参数创建一个测试方法,呵呵,人都疯掉了。幸好有参数化测试出现了。它能够创建由参数值供给的通用测试,从而为每个参数都运行一次,而不必要创建多个测试方法。注:测试方法(@Test 注释的方法)是不能有参数的。
参数化测试编写流程如下:
- 为参数化测试类用@RunWith 注释指定特殊的运行器:Parameterized.class;
- 在测试类中声明几个变量,分别用于存储期望值和测试用的数据,并创建一个使用这几个参数的构造函数;
- 创建一个静态(static)测试数据供给(feed)方法,其返回类型为Collection,并用@Parameter 注释以修饰;
对软件测试 实验(一) Junit4测试基本应用和学习中求三角形面积项目的优化。
一、实验目的
二、实验要求和内容
三、实验步骤
以上与之前的想同,不在重写;
过程:
- 本次项目将测试类与被测试类隔离放在两个包里。
- 不在测试是否构成三角形,只测试求三角形面积部分。
- 将计算不同三角形的面积所使用的不同的方法进行重写,使其拥有不同的作用。
- 不在使用大量的text标注,利用参数化测试,简化代码结构。
被测试类代码:
public class calTriArea {
private boolean judge(double a,double b,double c){//判断是否构成三角形
boolean flag = false;
if(a + b > c && a + c > b && b + c > a){
flag = true;
}
if(a <= 0 || b <= 0 || c <= 0){
flag = false;
}
return flag;
}
public double cal(double a,double b,double c) {//计算三角形面积
double area = -1.0;
if(!judge(a, b, c)) return area;
if(a == b && b == c){
area = getArea(a);
}else{
area = getArea(a, b, c);
}
return area;
}
private double getArea(double a){//等边三角形计算
return Math.sqrt(3) / 4 * a * a ;
}
private double getArea(double a,double b,double c){//任意三角形计算
double p = (a + b + c)/2;
return Math.sqrt( (p * ( p - a ) * ( p - b ) * ( p - c ) ) );
}
}
测试类代码:
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import bzu.hcf.calTriArea;
@RunWith(Parameterized.class)
public class calTriAreaTest {
private calTriArea calA = new calTriArea();
private double a,b,c;
private double exp;
public calTriAreaTest(double a,double b,double c, double exp) {
super();
this.a = a;
this.b = b;
this.c = c;
this.exp = exp;
}
@Parameters
public static Collection<Object[]> data() {
Object[][] data = new Object[][]{
{3,3,3,3.89711431},
{3,4,5,6.0},
{2,1,3,-1.0},
{-2,-1,-3,-1}
};
return Arrays.asList(data);
}
@Test
public void test() {
double res = calA.cal(a, b, c);
assertEquals(exp,res,0.00001);
}
}
结果
上一篇: uniapp 电商app 手机充值页面
下一篇: Spring IOC