php - 在测试一个测试功能之后使用另一个测试功能?

标签 php unit-testing testing phpunit php-5.5

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

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

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

最佳答案

在 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

关于php - 在测试一个测试功能之后使用另一个测试功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26272834/

相关文章:

php - laravel eloquent where like 整数运算符

php - Symfony 2 - 在 preSubmit 事件订阅者上向表单元素添加错误

php - 从 PDOException $e 返回特定项目

unit-testing - 没有期望时如何使 Mocha 失败()

c - 模拟/伪造文件系统以测试 C 代码?

ruby - spec 使用不同的配置运行同一组测试

javascript - 通过CSS获取css值并在Selenium中使用

基于php的文档管理系统

testing - 带有 Xvfb 和 Selenium 的 Jenkins - Firefox 启动但没有执行

java - 为什么 $MockitoMock$ 实例没有被识别为模拟?