2010-11-10 57 views
2

经常在单元测试中,我看到人们测试非常简单的事情,但实际上不会失败。例如,给定以下类别:正在测试简单的构造函数和默认被认为是“测试语言”还是可以接受?

class Foo 
{ 
    public $var = 'default val1'; 
    public $var2 = 4; 
    public $var3; 

    public function __construct($var3) 
    { 
     $this->var3 = $var3; 
    } 
} 

很简单。 $var$var2有默认值,$var3通过构造函数初始化。

但是,有些人需要3次测试。两个检查默认值是初始化的,第三个检查$var3是通过构造函数分配的。对我来说,这看起来很浪费 - 看起来我正在测试语言对这些功能的实现。

正在测试这样一个好主意吗?如果是这样,为什么?

回答

2

真的不值得编写测试来测试编译器,而且通常不是用于真正简单的代码。除非你有某种外部需求。

但是,这并不能防止将来对Foo所做的更改。如果我正在编写一些依赖于该行为的其他函数,那么我很乐意在该函数的测试中编写一个快速测试。

1

看起来像是浪费时间给我。没有逻辑的东西不需要测试 - 只要你足够好地测试行为,任何与构造函数,setters等有关的问题都会暴露在某个地方。

0

如果此行为是公共接口的一部分,则应对其进行测试。客户端代码可能依赖于$var默认具有此特定值。测试应确保如果有人改变它,它会被注意到。