2014-09-26 79 views
0

我有以下代碼,併爲它的正面和負面條件寫了兩個測試。但是基於TDD,我應該爲整個代碼編寫一個負面測試,以及我應該如何編寫它?如何編寫基於TDD的方法的否定測試?

「必須有至少兩個單元測試用例爲每個需求:一個正測試 和一個負測試 如果要求具有不合要求,每個子要求必須具有至少兩個 測試用例爲陽性負面「。

代碼

public class A { 

    boolean myOuput(int a) { 
     System.err.println(a); 

     if(a == 5) 

      return true; 
     else 
      return false; 
    } 

測試

public class ATest { 
    static A a; 
    public ATest() { 
    } 

    @BeforeClass 
    public static void setUpClass() { 
     a = new A(); 
    } 

    @AfterClass 
    public static void tearDownClass() { 
     System.err.println("tearDown class"); 
    } 

    @Before 
    public void setUp() { 
     System.err.println("setUp"); 
    } 

    @After 
    public void tearDown() { 
     System.err.println("tearDown"); 
    } 


    @Test 
    public void testOutputNotFive(){ 

     assertEquals(false,a.myOuput(0)); 
    } 

    @Test 
    public void testOutputForFive(){ 

     assertEquals(true,a.myOuput(5)); 
    } 

} 

回答

1

我不知道你在哪裏,從報價,但我做TDD因爲幾年會寫這兩個測試:

shouldReturnTrueIfInputIsFive() {...} 

shouldReturnFalseIfInputIsNotFive() {...} 

這包括你的代碼的100% - 這是你想要的:)

編輯:作爲一個方面說明 - 如果你這樣做TDD,你想測試,以儘可能的描述(他們實際上更換的文檔)。有一個明確的命名格式,如:應該 - 什麼 - 是非常有用的,因爲如果像testOutputNotFive沒有給出關於期望成果指示...

+0

在這種情況下,這兩個方法,我有覆蓋代碼是嗎? testOutputNotFive()和testOutputForFive(){ – Jack 2014-09-26 01:59:34

+0

是的。儘管如此,沒有關於你的_requirements的想法,將測試映射到需求是一個相當不同的魚羣。 – 2014-09-26 03:17:26

1

你的問題顯示了一個非常簡單的例子。在測試中我們經常發現錯誤發生在邊界條件附近。在邊界條件的任何一邊,你都傾向於有一個等價分區。即返回相同結果的一系列值。例如,保險單可能對人的年齡有限制。該人必須年滿18-65歲才能執行此政策。在這個例子中,18和65是邊界。您應該爲18和65編寫一個測試。您還應該編寫一個17的測試,即低於下限(低於17的所有值位於從17開始的相同等價分區上)。你需要爲66做同樣的事情。測試19和64將確保你也覆蓋了內部等價分區。

相關問題