如何测试索引越界错误?

时间:2014-09-06 04:22:20

标签: java string testing indexing

我编写了以下方法,从带有开始和结束索引的字符串中获取子字符串。对于将超出范围的索引,我如何在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);
}

1 个答案:

答案 0 :(得分:2)

在JUnit中有很多方法可以做到这一点,但最好的方法是使用ExpectedException功能。您设置了@Rule,指定您的测试可能会抛出异常,您可以设置对此异常的期望 - 它将具有什么类型,消息等等。

在测试类的顶部,您需要类似

的内容
@Rule public ExpectedException exceptionRule = ExpectedException.none();

然后在应该抛出异常的代码行之前,你可以编写像

这样的东西
exceptionRule.expect(MyException.class);

然后,如果抛出正确的异常,您的测试将成功;但是如果没有抛出异常就会失败。

有关您可以在ExpectedException规则中设置的更多期望,请参阅Javadoc