【问题标题】:JUnit testing with multiple test cases in a method在一个方法中使用多个测试用例进行 JUnit 测试
【发布时间】:2013-12-10 21:28:39
【问题描述】:

我有一个下面的类 A,它的构造函数接受两个字符串作为参数。

Class A
{
String test1;
String test2;

    public(String test1, String test2)
    {
    this.test1 = test1;
    this.test2 = test2;
    }
}

我想在一个测试用例方法中测试具有三个测试用例的构造函数,即 1.空测试1 2.空测试2 3.空测试1,空测试2

String test1 = "ABC";
String test2 = "XYZ";
@Test(expected=NullPointerException.class)
public void testNullConstructorValues() {
       new A(null, test2);
       new A(test1, null);
       new A(null, null);
}

这里的问题是,在第一个构造函数声明之后,方法抛出 NPE 并从方法中返回。我希望该方法仅在一个方法中执行所有 3 个构造函数声明并执行预期的异常检查。

有没有办法在一个方法中完成所有 3 个测试用例?

【问题讨论】:

  • 这只是为了好奇吗?否则你只有三种可能的情况,所以如果你为每种情况创建 3 个单独的方法,就不会做更多的工作。
  • 不,这只是为了好奇。它只是一个模拟,我的班级中有一堆测试用例方法,我想知道我是否可以通过任何方式对少数测试用例进行分组以提高可读性?
  • 我真的建议你不要这样做。将每个测试场景保存在自己的方法中,这样如果测试失败,您可以立即从 JUnit 输出中看到它是哪一个。

标签: java unit-testing junit mockito


【解决方案1】:

使用Parameterized runner 测试。

@RunWith(Parameterized.class)
public class ATest {
    private String value1;
    private String value2;

    private static final String ABC = "abc";
    private static final String XYZ = "xyz";

    public ATest(String value1, String value2) {
        this.value1 = value1;
        this.value2 = value2;
    }

    @Test(expected=NullPointerException.class)
    public void nullPassedToConstructor() {
         A a = new A(value1, value2);
    }

    // Provide data
    @Parameters
    public static List<Object[]> data() {
    List<Object[]> list = new ArrayList<Object[]>();

        list.add(new Object[] {null, XYZ});
        list.add(new Object[] {ABC, null});
        list.add(new Object[] {null, null});

        return list;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    相关资源
    最近更新 更多