Unit testing 将断言集成到测试类中
为什么将测试断言集成到测试类中是个坏主意 例如:Unit testing 将断言集成到测试类中,unit-testing,phpunit,Unit Testing,Phpunit,为什么将测试断言集成到测试类中是个坏主意 例如: class SomeClass { function add($a) { return $a + 1; } function test_add($TestCase) { $TestCase->assertEquals($this->add(1), 2); $TestCase->assertEquals($this->add(2), 3); } } 然后一些框架运行所有传递
class SomeClass {
function add($a) {
return $a + 1;
}
function test_add($TestCase) {
$TestCase->assertEquals($this->add(1), 2);
$TestCase->assertEquals($this->add(2), 3);
}
}
然后一些框架运行所有传递给它们的TestCase对象的test_*函数
这种方法有什么错?为什么所有框架都倾向于分离类实现代码和测试断言?我的第一个想法是这样做时类的大小。我发现,根据经验,我为每行实际代码编写了3行测试代码。所以你的班级人数会增加300% 另一个问题是组织。您的测试将散布在类和方法之间。要把东西放在一个容易找到的地方会更加困难
我们班现在做的事情比以前多得多。它现在正在执行我们所需要的任何功能,并且正在测试该功能是否正确。这是两个不同的东西,这意味着他们应该是两个不同的班级。谢谢。我最初的想法也是如此。关于组织。对我来说,当测试代码与实现一起进行时,比查看/记住特定功能的测试代码的位置要简单得多。测试代码的结构应该与源代码的结构类似,因此存储代码的目录应该与测试目录中的结构相同。这就是大多数重大项目的组织方式。