测试一个测试函数后,使用另一个测试函数?

时间:2014-10-09 07:38:19

标签: php unit-testing testing phpunit php-5.5

我有一些我用PHP编写的测试类和函数,在编写标准时我对标准有疑问。

我有一个函数可以创建一个后端存储对象,将其存储在数据库中,然后检索它,然后断言数据库中的值与它输入的值相同。

我还有另一个修改上述后端对象的功能,但要做到这一点,它当然需要存在。让第二个函数调用第一个函数(它还返回在验证它正确后创建的数据)是否谨慎,以便我可以自动执行修改测试而无需对所有内容进行硬编码?如果没有,除了硬编码值之外,还有其他替代方法吗?

1 个答案:

答案 0 :(得分:1)

在PHPUnit中,您可以使用@depends批注进行依赖于另一个的测试。您还可以将值从第一个测试传递到从属测试。 如果第一个测试失败,则不会执行第二个测试。并且您可以在第二个或多个测试依赖另一个上进行第三次测试(例如,为了测试删除,您不需要更新工作,只需插入)。

 public function testCreateRegister()
 {
     $db = new Database();
     $register_id = $db->createRegister('hello');

     // ...
     // check that the register was inserted correctly
     // ...

     return $register_id;
 }

 /**
  * @depends testCreateRegister
  */
 public function testUpdateRegister($register_id)
 {
     $db = new Database();
     $this->assertTrue($db->updateRegister('hi');
 } 

如文档中所述:

https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.test-dependencies