如何测试索引越界错误? [复制]

Posted

技术标签:

【中文标题】如何测试索引越界错误? [复制]【英文标题】:How to test for index out of bounds error? [duplicate] 【发布时间】:2014-10-31 01:09:37 【问题描述】:

我编写了以下方法,该方法从具有开始和结束索引的字符串中获取子字符串。对于会超出范围的索引,如何在 Junit 中编写测试用例?例如,如果字符串是香蕉,并且方法作为 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】:

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

在你的测试类的顶部,你想要类似的东西

@Rule public ExpectedException exceptionRule = ExpectedException.none();

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

exceptionRule.expect(MyException.class);

那么,如果抛出了正确的异常,你的测试就会成功;但是如果它到达末尾而没有抛出异常,它将失败。

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

【讨论】:

以上是关于如何测试索引越界错误? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

奇怪的数组索引越界异常

错误:索引超出了数组的范围。 [复制]

为啥简单的 C++ 向量函数会产生越界的下标? [复制]

从一道简单模拟题看数组越界以及其他

TypeConverter 实现的索引越界错误

错误 - 选项指令禁止的目录索引? [复制]