我们应该检查单元测试没有变化吗?

时间:2014-08-07 17:34:50

标签: java unit-testing

这个例子是定制的,让我怀疑。

Object Car {
  color:null
  tyre : 0;
}

fillCar(Object Car, boolean b) {
    if (b) {
        Car.color = "Red"
    } else {
        Car.tyre = 4;
    } 
}

现在我需要对我的代码进行单元测试。

我的test1是(Car,true),test2是(Car,false)。

我的问题:

我是否需要在test1和类似的线路上测试“轮胎== 4”我需要在test2时检查“color == null”吗?

3 个答案:

答案 0 :(得分:2)

如果这是该方法的功能要求的一部分,则答案为是。

例如,如果您的规格说明 True 轮胎的值必须为4且其他变量无关紧要,则无需这样做。但是,如果您的规格说不仅轮胎必须为4但其余变量必须保持相同的值,那么您也应该检查它。

考虑到单元测试不仅有助于检查您的代码是否正常,而且还可以确保在将来的代码中,您不会破坏预期的功能。

答案 1 :(得分:1)

通常,测试代码的所有部分都没有坏处。事实上,我会鼓励它。这是检查逻辑中没有错误的一种非常简单的方法。

在这种情况下,代码很简单,可以看到结果。但是,如果扩展Car或添加更多功能,它可能会变得更加复杂。

答案 2 :(得分:0)

关于这一点有很多争论,但是一旦我专注于验证界面,单元测试开始对我有意义。在这种情况下,您有一个函数,它公开了一个接口,您可以在其中传入car-object和boolean,然后根据boolean的值对car对象进行某些修改。你非常正确地看到两个单元测试覆盖它,我个人会停在那里。如果您担心出现空值,则可以在构建汽车对象时在单元测试中覆盖它。如果你指定的东西不是一个可能是null的直接文字,那么测试空值是有意义的。

在测试驱动设计(TDD)的背景下,再一次提示 - 单元测试对我来说效果更好。 YMMV,但我发现非TDD代码非常难以进行单元测试。

最后 - 只是提到我发现学习TDD /单元测试非常值得。