2014-09-06 46 views
0

我写了下面的方法从一个字符串中获取一个子字符串与开始和结束索引。对于那些会超出范围的索引,我如何在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); 
} 
+0

抛出错误? – 2014-09-06 04:24:01

+0

使用字符串长度函数 – 2014-09-06 04:24:33

回答

2

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

在您的测试类的顶部,你要像

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

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

exceptionRule.expect(MyException.class); 

然后如果引发正确的异常,你的测试将会成功;但如果到达最后而没有抛出异常,它将会失败。

查看Javadoc了解更多您可以在ExpectedException规则中设置的期望。