2009-12-08 159 views
0

我正在使用JUnit.I有一個測試方法來測試方法和一些測試用例。我想在該測試方法中運行所有的tes案例,但我無法做到這一點。當第一個測試用例失敗,測試方法不我如何爲測試方法運行很多測試用例

這裏是我的代碼

public class ComputeServiceTest extends TestCase { 

//test add method 
public void testAdd() 
{ 
    ComputeServices instance = new ComputeServices(); 

    //First test case 
    int x1 = 7; 
    int y1 = 5; 

    int expResult1 = 13; 
    int result1 = instance.add(x1, y1); 
    assertEquals("First test case fail",expResult1, result1); 


    // Second test case 
    int x2 = 9; 
    int y2 = 6; 

    int expResult2 = 15; 
    int result2 = instance.add(x2, y2); 
    assertEquals("Second test case fail",expResult2, result2); 


} 

我該怎麼辦運行第二個測試案例?

回答

3

這裏的標準建議是將第二個測試用例放入一個單獨的方法,然後它將運行,而不管第一個「測試用例」是否成功。

您可以使用setUp方法來初始化ComputeServices實例,因此您不需要每種測試方法中的樣板。

+0

+1。問題中的評論表明,提問者有「測試用例」這個詞非常混亂。根據評論,這個例子應該有幾個不同的TestCase子類。每個「測試用例」都有一類TestCase。那也能解決問題。 – 2009-12-08 03:10:32

+0

@ S.Lott:我不會混淆術語「測試用例」。在我的問題中,「測試用例」是一個帶有輸入和期望輸出的測試用例,但不是TestCase類的一個子類。我認爲你的解決方案是不好,因爲我必須創建很多類來擴展TestCase類來測試一個類的方法。 @unknow:謝謝你的回答。根據你的回答,如果我想測試一個驗證電子郵件的方法與5個測試用例,我必須有5個方法testEmail1,testEmail2,........是否好,如果我有很多測試用例? – 2009-12-08 04:05:48

+0

您可以爲每個「TestCase」類使用許多測試方法(testEmail1,testEmail2,testEmail3)。 如果你想測試Calculator.java類,那麼標準就是創建CalculatorTest.java來擴展TestCase並創建儘可能多的測試方法,以便測試Calculator.java提供的功能。 你不需要每個測試方法的類,1個java類來測試 - > 1個測試類來寫(其中有很多測試方法)。 – 2009-12-08 11:18:17

2

測試用例在第一次斷言失敗時中止,這是設計。

這是爲了隔離測試用例:如果第二個斷言失敗,您如何知道instance.add(9,6)是否中斷,或者是否由第一次調用add()方法引起?

當測試中的方法返回一個對象時這很有用,或者在發生錯誤時返回NULL。第一個斷言確保該方法返回一個對象,然後可以調用該對象的方法來驗證其狀態。當返回NULL時,測試用例在第一個斷言中放棄,不會拋出NullPointerException異常(模式名爲guard assertion)。

在TestCase中可以有很多測試方法。

相關問題