TDD:如何创建测试init值的测试

时间:2014-01-17 08:40:15

标签: java unit-testing junit tdd

我是TDD的新手,我遇到了一个问题。据我所知,TDD中的所有测试都应该在生产代码准备好之前失败。我开发了以下代码:

汽车界面:

public interface CarOperations{

/**
 * Return current car speed in km/h
 */
public int currentSpeed();

}

汽车班:

public class Car implements CarOperations{

@Override
public int currentSpeed() {
    // TODO Auto-generated method stub
    return 0;
}}

JUnit测试:

    @Test
public void testInitSpeed() {
    Car car = new Car();

    assertEquals(0, car.currentSpeed());
}

所以我希望这个测试会失败,因为在开发任何生产代码之前每个TDD测试都会失败,但由于int默认值,这个测试将通过。我可以将方法的返回类型更改为Integer并接收NULL值,但我想知道在这种情况下如何处理原语?也许我的考试错了?

3 个答案:

答案 0 :(得分:3)

我不认为这样一个微不足道的案例是一个问题,因为很明显,如果你不返回0,测试将失败。现在,如果您确实想要确认测试可能失败,您可以return -1;

答案 1 :(得分:1)

实际上,当您首先编写测试时,不应该定义一个类或属性。这意味着应用程序无法编译,因为测试失败。然后,您只是不将init值分配给字段,test将再次失败。

P.S:测试类型的默认值(例如0为int,对于String等为null)有点无意义。

答案 2 :(得分:0)

您可以抛出异常(例如NotImplementedException),而不是返回默认值(原语或非原语)。这样,您的测试将始终失败。