在测试方法中使用相同常数值的优缺点是什么?

时间:2012-05-20 14:25:34

标签: tdd

我对TDD很新。我正在阅读TDD By Example并且它说“从不尝试使用相同的常量来表示不止一件事”并且它显示了Plus()方法的示例。

在我看来,Plus(1,1)使用相同的常数值和Plus(1,2)之间没有区别。我想知道在测试方法中使用相同的常量值有什么优缺点?

2 个答案:

答案 0 :(得分:5)

我认为你误解了这个说法。作者(imho)试图表达的是,以下代码是灾难的一种方法。

const SomeRandomValue = 32;
...
// Plus testcase
Plus(SomeRandomValue, SomeRandomValue)
...
// Divide testcase
Divide(SomeRandomValue, SomeRandomValue)

您有两个测试用户重复使用无描述性常量。没有办法知道将SomeRandomValue更改为0您的测试套件会失败。

更好的命名就像是

const AdditionValue = 32;
const DivisorValue = 32;
...
// Plus testcase
Plus(AdditionValue, AdditionValue)
...
// Divide testcase
Divide(DivisorValue, DivisorValue)

在哪些常量用于显而易见的地方。在创建测试用例时,不应该让 挂起代码重用的想法。

或换句话说:

  

我认为在多个测试用例中重用DivisorValue常量没有任何问题>但是,在代码重用的名义下,试图将一个值变成一个无描述性的变量肯定是错误的。

答案 1 :(得分:1)

如果您在测试中使用相同的值 - 例如Plus(1, 1) - 您的代码可能会出错。以下是Plus的实现,它将通过此​​类测试,但未通过具有不同值的测试。

public int Plus (int a, int b) {
    return a + a;
}

避免这种风险的测试比允许这样的错误的测试更好。