有没有办法实现这个目标?
有没有办法实现这个目标?
您可以通过调用IDatabaSEOperation的execute方法来完成此操作,您可以从PHPUnit_Extensions_Database_Operation_Factory获取该方法.你基本上会使用CLEAN_INSERT或INSERT.
作为zerkms’ second approach,您可以在每个需要特定数据的测试开始时调用它.例如:
public function testA() { PHPUnit_Extensions_Database_Operation_Factory::INSERT() ->execute($this->getConnection(),$this->createXMLDataSet(__DIR__.'/fixtureA.xml')); // Test code }
但是,此解决方案的优点是整个测试用例的数据集保持不变,因此:
>测试方法保持彼此独立(而在zerkms方法中,如果您没有/忘记在另一个测试方法中指定数据集,它将重用更改数据集的先前(随机?)方法的数据集,是非常丑陋和非常容易出错的恕我直言.在这里,任何其他没有这种调用的测试都会像往常一样使用测试用例数据集.>您可以在公共(测试用例)数据集之上构建测试数据集.如果使用INSERT操作(不是CLEAN_INSERT),它将在公共数据集的所有行之后插入特定于测试的行.您还可以使用DELETE操作从该公共数据集中删除一些不需要的行.> BTW,即使测试用例的设置操作已经改变,也不会调用onSetUp()使其工作.