Java 如何为基于TDD的方法编写否定测试?
我有下面的代码,并为它的正负条件编写了两个测试。但是基于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
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(){确实是的。但对您的需求没有任何概念,将测试映射到需求是另一回事。