Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在一个方法中使用多个测试用例进行JUnit测试_Java_Unit Testing_Junit_Mockito - Fatal编程技术网

Java 在一个方法中使用多个测试用例进行JUnit测试

Java 在一个方法中使用多个测试用例进行JUnit测试,java,unit-testing,junit,mockito,Java,Unit Testing,Junit,Mockito,我有一个带构造函数的类a,它以两个字符串作为参数 Class A { String test1; String test2; public(String test1, String test2) { this.test1 = test1; this.test2 = test2; } } 我想在一个测试用例方法中用三个测试用例测试一个构造函数,即。 1.空test1 2.空测试2 3.空test1,空test2 String test1 = "ABC";

我有一个带构造函数的类a,它以两个字符串作为参数

Class A
{
String test1;
String test2;

    public(String test1, String test2)
    {
    this.test1 = test1;
    this.test2 = test2;
    }
}
我想在一个测试用例方法中用三个测试用例测试一个构造函数,即。 1.空test1 2.空测试2 3.空test1,空test2

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个测试用例?

使用一个测试

@RunWith(参数化的.class)
公开课考试{
私有字符串值1;
私有字符串值2;
私有静态最终字符串ABC=“ABC”;
私有静态最终字符串XYZ=“XYZ”;
公共ATest(字符串值1、字符串值2){
此值为1.value1=value1;
此参数为0.value2=value2;
}
@测试(预期=NullPointerException.class)
public void nullPassedToConstructor(){
A=新A(值1,值2);
}
//提供数据
@参数
公共静态列表数据(){
列表=新的ArrayList();
添加(新对象[]{null,XYZ});
添加(新对象[]{ABC,null});
添加(新对象[]{null,null});
退货清单;
}
}

这只是出于好奇吗?否则,您只有三个案例,所以如果您为每个案例创建三个单独的方法,这不会做更多的工作。不,这只是出于好奇。这只是一个模拟,我在我的类中有一堆测试用例方法,我想知道我是否可以通过任何方式将少数几个测试用例分组以提高可读性?我真的建议你不要这样做。将每个测试场景保留在自己的方法中,这样,如果测试失败,您可以立即从JUnit输出中看到它是哪一个。
@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;
    }
}