我编写了以下方法,从带有开始和结束索引的字符串中获取子字符串。对于将超出范围的索引,我如何在Junit中编写测试用例?例如,如果字符串是banana并且该方法作为getSubstring(3,12)运行,则该方法将抛出一个越界错误。如何编写在显示此错误时将通过的测试用例?
public String getSubstring(int start, int end){
sub = MyString.str.substring(start, end);
return sub;
}
@Test
public void testgetSubstring() {
MyString test = new MyString();
String result = test.getSubstring(3,12);
}
答案 0 :(得分:2)
在JUnit中有很多方法可以做到这一点,但最好的方法是使用ExpectedException
功能。您设置了@Rule
,指定您的测试可能会抛出异常,您可以设置对此异常的期望 - 它将具有什么类型,消息等等。
在测试类的顶部,您需要类似
的内容@Rule public ExpectedException exceptionRule = ExpectedException.none();
然后在应该抛出异常的代码行之前,你可以编写像
这样的东西exceptionRule.expect(MyException.class);
然后,如果抛出正确的异常,您的测试将成功;但是如果没有抛出异常就会失败。
有关您可以在ExpectedException
规则中设置的更多期望,请参阅Javadoc。