gpt4 book ai didi

java - JUnit 测试具有多个(不同)参数的预期异常

转载 作者:行者123 更新时间:2023-11-28 20:52:38 25 4
gpt4 key购买 nike

我有一个带有 Address 类的 Java 程序,该类应包含邮政编码,基本格式为\d{4}[A-Z]{2}。此代码抛出自定义(已检查)IncorrectPostcodeException,我想用 JUnit 对此进行测试。查看其他问题,我发现了如何测试是否确实抛出了正确的异常。

我现在想使用多个参数运行测试。为了确保测试按预期进行,我还包含了一个“错误”的邮政编码,因此测试应该会失败。如果我尝试使用常规方法进行此操作,它会按预期工作,并且以下测试失败,因为第二个邮政编码不正确。

@Test
public void testPostcode() throws IncorrectPostcodeException {
Address correctPostcode = new Address();
correctPostcode.setPostcode("1234AB");
correctPostcode.setPostcode("12"); // THIS SHOULD FAIL THE TEST
}

但是,如果我以类似的方式编写异常测试,测试不会失败:

@Test(expected=IncorrectPostcodeException.class)
public void testPostcodeException() throws IncorrectPostcodeException {
Address wrongPostcode = new Address();
System.out.println("1");
wrongPostcode.setPostcode("123AB"); // throws exception as expected
System.out.println("2");
wrongPostcode.setPostcode("1234AB"); //THIS SHOULD FAIL THE TEST
System.out.println("3");
wrongPostcode.setPostcode("123ABC"); // should throw exception too but is not reached
}

如果我将第二个邮政编码作为第一个或唯一的测试用例,测试将按预期失败。但是为“调试”而添加的 println 语句确实表明只执行了第一行。

如何使 JUnit 测试具有多个输入参数的异常,而无需为每个测试用例编写单独的方法?我寻找答案,但其他问题似乎与在一种方法中测试多个不同的异常有关,而不是一个异常的多个参数。

最佳答案

在您的测试中,您抛出了“123AB”的异常。测试到此结束。其他方法(用其他数据设置邮政编码,系统输出...)不执行。

如果你想检查其他情况,他们应该在其他测试用例中。

您可以尝试进行 2 个参数化测试,一个包含所有失败案例,另一个包含所有异常。

关于java - JUnit 测试具有多个(不同)参数的预期异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39978352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com