JUnit4的参数化测试

一直以为TestNG才有参数化测试解决方案,不想在看了Parameterising JUnit tests 的文章以才知道JUnit4中也提供了参数化测试的功能,于是简单的学习了一下。
   什么是参数化测试?
   很多时候一个方法的实现需要支持多种Case或者说从测试的角度来看需要测试多种边际条件。例如一个字符串大小写转换的函数需要实现把employee_info这样以“_”分隔的字符串转换成相应的大写字母开头的字符串EmployeeInfo。针对这样的实现方法进行单元测试就需要考虑支持测试多种情况:
    1.测试空字符串
    2.测试一般处理情况
    3.测试尾字母大写的情况.......
    4.处理Null
    5......
    在不使用参数化测试方法的情况下,我们需要针对各种情况编写assert:
    1. assertEquals(“”,“”);
    2.assertEquals("EmployeeInfo","employee_info");
3. assertEquals("EmployeeInfoA","employee_info_a");
    4.assertEquals(null,null);
    5......
   这种解决方式是不是感到有很多重复,而参数化测试就是解决这种情况的绝好方法。
   下面来介绍一下参数化测试的开发方式
   参数化测试实例
   1. 为准备使用参数化测试的测试类指定特殊的运行器 org.junit.runners.Parameterized。
   2. 为测试类声明几个变量,分别用于存放期望值和测试所用数据。
   3. 为测试类声明一个使用注解 org.junit.runners.Parameterized.Parameters 修饰的,返回值为 java.util.Collection 的公共静态方法,并在此方法中初始化所有需要测试的参数对。
   4. 为测试类声明一个带有参数的公共构造函数,并在其中为第二个环节中声明的几个变量赋值。
   5. 编写测试方法,使用定义的变量作为参数进行测试。
/*********************************************************************************************/
@RunWith(Parameterized.class)
public class StringTransformerTest {
    private String testData;
    private String expectedData;

    public StringTransformerTest(String testData, String expectedData) {
        this.testData = testData;
        this.expectedData = expectedData;
    }

    @Test
    public void testTransfer() {
        assertEquals(expectedData, StringTransformer.transfer(testData));
    }

    @Parameters
    public static Collection getParameters() throws Exception {
        return Arrays.asList(new Object[][] {
                { "employee_info", "employeeInfo" }, // 测试一般的处理情况
                { null, null }, // 测试 null 时的处理情况
                { "", "" }, // 测试空字符串 时的处理情况
                { "employee_info", "EmployeeInfo" }, // 测试当首字母大写时的情况
                { "employee_info_a", "employeeInfoA" }, // 测试当尾字母为大写时的情况
                { "employee_a_info", "employeeAInfo" } // 测试多个相连字母大写时的情况
                });

    }
}
/*********************************************************************************************/

   运行效果如下图



参考资料
Parameterising JUnit tests
单元测试利器 JUnit 4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值