2009-12-08 112 views
2

多次調用assertXXX我正在使用JUnit。 我想在測試方法中多次調用assertEquals()來測試許多不同的測試用例,但我不想有很多測試方法。 所以我使用setUp()和tearDown()。 但是,當第一個assertEquals()失敗。第二個assertEquals()不起作用,並且setUp()方法剛剛被調用一次。我如何使用setUp()和tearDown()

這裏是我的代碼

public class ComputeServiceTest extends TestCase { 

private ComputeServices instance = new ComputeServices(); 


public ComputeServiceTest(String name) 
{ 
    super(name);   
} 

protected void setUp() 
{ 
    System.out.println("aaaaaaaaaaaaaaaaaaaaa"); 
    instance = new ComputeServices(); 
} 

protected void tearDown() { 

} 

//test add method 
public void testAdd1() 
{    
    //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 
    System.out.println("AAAAAAAAAAAAAAAAAAAAAaaaaaaaaaa"); 
    int x2 = 9; 
    int y2 = 6; 

    int expResult2 = 16; 

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

}

請幫助我解決THI錯誤。

+1

7 + 5 = 13? 9 + 6 = 16?這是故意的嗎? – 2009-12-08 09:24:08

+0

相關:http://stackoverflow.com/questions/1864290/how-can-i-run-many-test-cases-for-a-test-method 或可能複製... – 2009-12-08 13:33:36

回答

0

你應該讓他們工作,或者如果這不是你想要的,現在,它們寫入到許多測試方法。

問候

邁克 [;-)

0

如果你真的想這樣做只有一個測試方法,你可以有你的獨特的測試方法的最後一個斷言:

assertEquals("my big assertion", 
      true, 
      ((expResult1==result1) && (expResult2, result2)); 

但我不會建議:你怎麼知道哪個測試失敗呢?你不會有任何細節。

爲什麼你不希望避免在你的TestCase的幾種測試方法?可能有另一種方法來實現你想要的。

3

我不認爲您正確使用工具(JUnit)。

單元測試可以失敗或成功,沒有這樣的事,作爲一個半成功或半失敗的測試。

單設置必須爲每一個測試是不夠的,如果你需要一個以上的建立呼叫,然後你把許多測試於一體。

我不認爲這是在分裂測試分成許多小測試的任何缺點。安裝和拆卸應該不是很重,測試應該總是按照ms的順序運行,並且測試的粒度越高越好,所以您確切知道哪些功能已停止工作。

相關問題