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%

另一个问题是组织。您的测试将散布在类和方法之间。要把东西放在一个容易找到的地方会更加困难


我们班现在做的事情比以前多得多。它现在正在执行我们所需要的任何功能,并且正在测试该功能是否正确。这是两个不同的东西,这意味着他们应该是两个不同的班级。

谢谢。我最初的想法也是如此。关于组织。对我来说,当测试代码与实现一起进行时,比查看/记住特定功能的测试代码的位置要简单得多。测试代码的结构应该与源代码的结构类似,因此存储代码的目录应该与测试目录中的结构相同。这就是大多数重大项目的组织方式。