在单元测试中,我常常看到人们测试非常简单的事情,这些事情实际上不会失败。例如,给定以下类:
class Foo
{
public $var = 'default val1';
public $var2 = 4;
public $var3;
public function __construct($var3)
{
$this->var3 = $var3;
}
}
非常简单。 $var
和$var2
有默认值,$var3
通过构造函数初始化。
但是,对某些人来说,这需要3次测试。检查默认值的两个是初始化的,第三个检查$var3
是通过构造函数分配的。对我而言,这似乎是一种浪费 - 似乎我正在测试语言对这些功能的实现。
这样的测试是个好主意吗?如果是这样,为什么?
答案 0 :(得分:2)
测试编译器并不值得编写测试,通常不是真正简单的代码。除非你有某种外在要求,否则不会。
但是,这并不能防止将来对Foo
进行更改。如果我正在编写一些依赖于该行为的其他函数,我会非常想在该函数的测试中编写一个快速测试。
答案 1 :(得分:1)
似乎浪费时间给我。没有逻辑的东西不需要测试 - 只要你足够好地测试行为,构造函数,setter等的任何问题都会暴露在某处。
答案 2 :(得分:0)
如果此行为是公共接口的一部分,则应对其进行测试。默认情况下,客户端代码可能依赖$var
具有此特定值。如果有人改变了,测试应该确保它被注意到。