Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为基于TDD的方法编写否定测试?_Java_Unit Testing_Junit_Tdd - Fatal编程技术网

Java 如何为基于TDD的方法编写否定测试?

Java 如何为基于TDD的方法编写否定测试?,java,unit-testing,junit,tdd,Java,Unit Testing,Junit,Tdd,我有下面的代码,并为它的正负条件编写了两个测试。但是基于TDD,我应该为整个代码编写一个否定测试,我应该如何编写呢 “每个需求必须至少有两个单元测试用例:一个阳性测试 还有一个阴性测试。 如果需求有子需求,则每个子需求必须至少有两个 测试案例为阳性和阴性。” 代码 public class A { boolean myOuput(int a) { System.err.println(a); if(a == 5) return

我有下面的代码,并为它的正负条件编写了两个测试。但是基于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));
    }

}

我不确定你是从哪里引用的,但我从几年前开始做TDD,并将编写以下两个测试:

shouldReturnTrueIfInputIsFive() {...}

shouldReturnFalseIfInputIsNotFive() {...}
这涵盖了100%的代码-这就是您想要的:)


编辑:作为旁注-如果您进行TDD,您希望测试尽可能具有描述性(它们实际上取代了文档)。有一个清晰的命名模式,如“应该-什么-什么时候”非常有用,因为如果像
testOutputNotFive
这样的东西没有给出预期结果的指示…

您的问题显示了一个非常简单的例子。在测试中,我们经常发现边界条件附近会出现错误。在边界条件的任意一侧,都有一个等价分区。i、 e.返回相同结果的一系列值。例如,保险单可能对个人年龄有限制。投保人必须年满18-65岁才能投保。在本例中,18和65是边界。你应该为18岁和65岁写一个测试。您还应该为17编写一个测试,即小于下边界的1(所有小于17的值都位于从17开始的相同等价分区上)。你需要为66人做同样的事情。测试19和64将确保您也涵盖了内部等价分区。

在这种情况下,我介绍的这两个方法涵盖了代码,对吗?testOutputNotFive()和testOutputForFive(){确实是的。但对您的需求没有任何概念,将测试映射到需求是另一回事。