无法让PHPUnit依赖项正常工作

3
我正在开发一个API,并且在编写一些测试用例时遇到了困难。 我已经编写了一组通用的测试用例来测试所有实体。这些包括常规操作,如创建、修改和删除。
/**
 * @dataProvider provideCreateData
 * @depends LoginTest::testLogin
 */
public function testCreate

 /**
 * @dataProvider provideModifyData
 * @depends testCreate
 */
function testModify

数据提供程序提供 API 实体列表及其各自的属性,测试动态地测试所有实体,而无需在未来更改时维护测试。

上述内容目前运行良好,但我遇到了整合其他需要硬编码的测试的问题,例如不遵循一般模式的搜索功能。 显然,我不能在不存在实体的情况下测试查找功能,因此查找测试需要在创建测试之后运行,这是我遇到的问题。 我尝试使用:

 /**
 * @depends GeneralTest::testCreate 
 */
public function testFind() {}

哪里出了问题,测试没有运行,而是无缘无故地跳过。但是如果我删除依赖项,则会运行测试,但是这样我就不能保证数据库中存在实体。

我觉得我可能漏掉了一些明显的东西,或者可能我误解了一些重要的概念。

1个回答

5

跳过消费者测试的原因有几个。

  1. 在 'GeneralTest::testCreate' 之前定义了 'testFind'。PHPUnit 不会更改执行顺序以帮助依赖关系;这取决于您。
  2. 'GeneralTest::testCreate' 中的断言失败了。如果断言失败,则未满足依赖项,因此方法将被跳过。

只有在真正需要时才应使用 @depends。您应该努力使每个测试方法测试特定的执行路径。如果您认为需要依赖项,则需要配置测试套件以便可以控制测试的顺序。

https://phpunit.de/manual/3.7/en/organizing-tests.html#organizing-tests.xml-configuration


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接