2014-09-26 78 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将确保你也覆盖了内部等价分区。

相关问题