如何为基于TDD的方法编写负面测试?

时间:2014-09-26 01:30:10

标签: java unit-testing junit 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));
    }

}

2 个答案:

答案 0 :(得分:1)

我不确定你在哪里引用,但是我已经做了几年的TDD并且会写下这两个测试:

shouldReturnTrueIfInputIsFive() {...}

shouldReturnFalseIfInputIsNotFive() {...}

这涵盖了100%的代码 - 这就是你想要的:)

编辑:作为旁注 - 如果您执行TDD,您希望测试尽可能具有描述性(它们实际上替换文档)。有一个明确的命名模式,如应该 - 什么 - 非常有帮助时,因为如果testOutputNotFive之类的东西没有给出关于期望的结果......

答案 1 :(得分:1)

您的问题显示了一个非常简单的例子。在测试中,我们经常发现边界条件周围发生错误。在边界条件的任何一侧,您倾向于具有等价分区。即返回相同结果的一系列值。例如,保险单可能对人的年龄有限制。该人必须年满18-65岁才能购买该政策。在这个例子中,18和65是边界。您应该为18和65编写测试。您还应该编写17的测试,即比下边界少1(所有低于17的值都在17的相同等价分区上)。您需要对66执行相同的操作。测试19和64将确保您还覆盖了内部等效分区。