首页 > 其他分享 >junit参数化测试的使用方法

junit参数化测试的使用方法

时间:2022-10-07 17:35:50浏览次数:77  
标签:Suite 参数 测试 import org junit runners

 

JUnit参数化测试的五个步骤:
(1)为准备使用参数化测试的测试类指定特殊的运行器 org.junit.runners.Parameterized。
(2)为测试类声明几个变量,分别用于存放期望值和测试所用数据。
(3)为测试类声明一个带有参数的公共构造函数,并在其中为第二个环节中声明的几个变量赋值。
(4)为测试类声明一个使用注解 org.junit.runners.Parameterized.Parameters 修饰的,返回值为 java.util.Collection 的公共静态方法,并在此方法中初始化所有需要测试的参数对。
(5)编写测试方法,使用定义的变量作为参数进行测试。

import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.Collection;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

//(1)步骤一:测试类指定特殊的运行器org.junit.runners.Parameterized ,表示该类将不使用Junit内建的运行器运行,而使用参数化运行器运行
@RunWith(Parameterized.class)
public class CalculatorTest {
private Calculator cal;

// (2)步骤二:为测试类声明几个变量,分别用于存放期望值和测试所用数据。
private int expected;
private int input1;
private int input2;

@Before
public void setUp() {
cal = new Calculator();
}



// (3)步骤三:为测试类声明一个带有参数的公共构造函数,并在其中为第二个环节中声明的几个变量赋值。
public CalculatorTest(int expected, int input1, int input2)// 构造方法,为各个参数赋值。
{
this.expected = expected;
this.input1 = input1;
this.input2 = input2;
}

// (4)步骤四:为测试类声明一个使用注解 org.junit.runners.Parameterized.Parameters 修饰的,返回值为
// java.util.Collection 的公共静态方法,并在此方法中初始化所有需要测试的参数对。
@Parameters
public static Collection<Integer[]> prepareData() {
Integer[][] object = { { 3, 1, 2 }, { -4, -1, -3 }, { 5, 0, 5 } };
return Arrays.asList(object);// 数组转化成集合形式。
}

// (5)步骤五:编写测试方法,使用定义的变量作为参数进行测试。
@Test
public void testAdd() {
System.out.println(this.input1+","+this.input2);
assertEquals(this.expected, cal.add(this.input1, this.input2));// 注意是调用的成员变量。
}


}
output:
1,2
-1,-3
0,5

 

 

 

在Junit中,如果想要同时运行多个测试,需要使用两个注解,
@RunWith(Suite.class)和
@Suite.SuiteClasses(),

创建一个空类作为测试套件的入口。
使用注解 org.junit.runner.RunWith 和 org.junit.runners.Suite.SuiteClasses 修饰这个空类。

通过这两个注解分别指定使用Suite运行器来运行测试,以及指定了运行哪些测试类,其中的,@RunWith(Suite.class)中可以继续指定Suite,这样Junit会再去寻找里面的测试类,一直找到能够执行的TestCase并执行之。

将 org.junit.runners.Suite 作为参数传入注解 RunWith,以提示 JUnit 为此类使用套件运行器执行。
将需要放入此测试套件的测试类组成数组作为注解 SuiteClasses 的参数。
保证这个空类使用 public 修饰,而且存在公开的不带有任何参数的构造函数

package com.shengsiyuan.junit;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;@RunWith(Suite.class)
@Suite.SuiteClasses({CalculatorTest.class,ParametersTest.class})public class TestAll {//仅仅一个摆设,实际没用。
}

@BeforeClass、@AfterClass在所有的测试方法以及。@Before、@After执行之前执行。仅仅执行一次,相当于全局初始化和全局销毁,而@Before、@After有多少测试方法就执行多少次


@Ignore可以修饰忽略一个已被@Test修饰的测试方法,也可以修饰一个类,那么类下的所有方法都会被忽略。还可带一个可选的默认参数,用于说明原因。

​http://blog.sina.com.cn/s/blog_5cd7f5b40100smao.html​​​

 



标签:Suite,参数,测试,import,org,junit,runners
From: https://blog.51cto.com/u_15147537/5734727

相关文章

  • 深度压缩网络 | 较大程度减少了网络参数存储问题
    “计算机视觉研究院”计算机视觉研究院专栏作者:Edison_G计算机视觉研究院长按扫描二维码关注我们深度学习在移动端的应用是越来越广泛,由于移动端的运算力与服务器相比还是有......
  • 性能测试知识科普(三)
    上一篇文章聊了性能测试中常见的测试策略以及如何选择合适的策略进行测试活动开展。这篇文章是性能测试知识科普的第三篇,我想聊聊很多性能测试小白最关心也最核心的问题......
  • httpclient实现HttpGet请求传body的json参数的!
    原文来自:https://admins.blog.csdn.net/article/details/109809386前言最近调用公司项目一个接口时,发现该接口是一个Get请求,入参在Body中(json格式)。场景如下:A服务需发送h......
  • HttpClient发送Post请求传递json、普通参数
    importcom.alibaba.fastjson.JSONObject;importorg.apache.http.HttpEntity;importorg.apache.http.NameValuePair;importorg.apache.http.client.entity.UrlEncod......
  • 一些网络延迟测试工具
    主要整理一些工具,方便使用参考工具iperf比较老牌的,使用的用户比较多ethr微软基于golang开发的,新秀nuttcp基于了nttcp,原始来源是ttcpscamper一个比较强大的工具,集成了众多工......
  • orioledb 集成citus 测试
    前边制作了一个简单的orioledb集成citus的docker镜像​​dalongrong/orioledb:citus-11.0.5​​,以下是一个简单测试环境准备docker-compose文件version:'3'services:......
  • Python 冒泡排序,选择排序,归并排序, 希尔排序 算法 及测试
    使用代码实现冒泡排序,选择排序,归并排序,希尔排序4中算法完成下列任务。对1~100000序列打乱顺序,使用上述4种排序算法进行排序。每种算法排序重复100次排序过程中记录......
  • 若依使用postman登录进行api测试
    最近无聊研究一下若依的架构,但是不想在前端上有过多的纠结,因此想使用postman来操作后端的api进行测试。关闭验证码我们使用postman时传递验证码的base64非常繁琐,因此关闭......
  • Lombok 使用在 IDEA 中进行 JUnit 测试的时候提示 variable log 错误
    提示的错误信息如下:D:\WorkDir\USRealEstate\Source-Code\Common\common\src\test\java\com\ossez\common\tests\ConfTest.java:28:9java:cannotfindsymbolsymbol:v......
  • SpringBoot整合Junit、MyBatis
                 ......