我有一个带有Address类的Java程序,它应该包含一个zip/邮政编码,格式基本上是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测试成为一个具有多个输入参数的异常,而不为每个测试用例编写单独的方法?我寻找答案,但其他问题似乎涉及在一种方法中测试多个不同的异常,而不是一个异常的多个参数。
发布于 2016-10-11 05:37:33
在您的测试中,您将抛出一个异常“123 an”。测试到此结束。其他方法(用其他数据设置邮政编码,系统输出.)不会被处决。
如果您想检查其他情况,它们应该在其他测试用例中。
你可以试着做两个参数化的测试,一个和所有的情况一样,一个除了所有的例外。
https://stackoverflow.com/questions/39978352
复制相似问题