JUnit 4的参数化测试

最近在研究TestN与JUnit 4的优劣势。在测试JUnit 4的@Parameters的时候,遇到initializationError的错误。所以,想彻底研究了一下这个问题出现的原因,并找出解决方法。

问题描述:

之前使用JUnit的时候,可以直接以JUnit test形式运行test类中某个用@Test注解的函数。但是如果test类中使用了@RunWith(Parameterized.class)注解,这种运行方法就会出现initializationError的错误。


被测试的类Math:

package com.ibm.junit.parameter;

/**
 * @author [email protected]
 *
 */
public class Math {

    public static int divide(int x,int y) {   
        return x/y;   
    }   
  
    public static int multiple(int x,int y) {   
        return x*y;   
    } 
}

测试的类MathTest:

package com.ibm.junit.parameter;

import static org.junit.Assert.assertEquals;

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

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来给你演示一下如何使用 Junit4 进行参数化测试。 首先,你需要在代码中引入 Junit4 的依赖。在 Maven 项目中,你可以在 pom.xml 文件中添加以下依赖: ```xml <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> ``` 然后,在 Task 类的同一个包下,创建一个名为 `TaskTest` 的测试类。在该类中,使用 `@RunWith(Parameterized.class)` 注解标记该类并创建一个静态方法来提供测试数据: ```java import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import java.util.Arrays; import java.util.Collection; @RunWith(Parameterized.class) public class TaskTest { private int x; private int y; private int z; private int expected; public TaskTest(int x, int y, int z, int expected) { this.x = x; this.y = y; this.z = z; this.expected = expected; } @Parameters public static Collection<Object[]> data() { Object[][] data = new Object[][] { { 1, 2, 3, 6 }, { 4, 4, 11, 20 }, { 5, 6, 10, 21 }, { 2, 3, 13, 18 }, { 10, 1, 5, 16 } }; return Arrays.asList(data); } @Test public void testFuncCoverage() { Task task = new Task(); int result = task.funcCoverage(x, y, z); assertEquals(expected, result); } } ``` 在上面这个例子中,我们定义了一个包含多组测试数据的二维数组 `data`,每组数据都包含了三个参数 x、y、z 和一个期望的结果。`@Parameters` 注解标记的方法 `data()` 返回一个 `Collection` 对象,其中包含了所有的测试数据。在测试类的构造函数中,我们使用这些测试数据初始化了类中的字段。在 `testFuncCoverage()` 方法中,我们通过创建 Task 对象并调用 `funcCoverage()` 方法来测试代码的正确性。 最后,你可以使用你的 IDE 中的 Junit 运行器运行测试代码,并观察测试结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值