2014-09-06 47 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規則中設置的期望。