【问题标题】:Call test dependency via UI通过 UI 调用测试依赖
【发布时间】:2018-07-05 23:35:56
【问题描述】:

我有以下测试结构:

public function testData() {
   $data = 10;
   // Test using $data
   return $data;
}
/**
 * @depends testData
 */
public function testSameData($data) {
    // More tests using data
}

当我将它作为我的测试套件的一部分运行时,它运行良好。

但是,在 PhpStorm 中,如果我右键单击函数名称,我会看到“运行 'testSameData'”选项,当我点击它时,它会给我:

此测试依赖于“Tests\testData”才能通过。

如果要求将 PhpStorm 作为单独的函数运行,是否有(内置或插件)方法来配置 PhpStorm 以自动运行测试的依赖项?

【问题讨论】:

  • 似乎是 dataprovider 而不是 depends

标签: php phpunit phpstorm


【解决方案1】:

@depends 注释告诉 phpunit,该测试只有在它所依赖的测试之前运行过时才能调整。

在您的情况下,您似乎需要一个数据提供者:https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.data-providers

充当dataProvider的方法需要返回一个数组数组,像这样:

public function myTestData() : array
{
    return [
        [10]
    ]
}

/**
 * @dataProvider myTestData
 */
public function testSameData($data) 
{
    // More tests using data
}

请注意,数据提供程序将为外部数组中的每个数组条目运行测试。这样,您可以使用不同的数据集多次运行一个测试。

可选地,这些数据集可以命名:

public function myTestData() : array
{
    return [
        'Ten' => [10],
        'Five' => [5],
    ]
}

编辑:请注意我已经更改了数据提供者的名称:如果它以 test 开头,phpunit 将自己认为它是一个测试用例,并且可能会警告缺少断言。

【讨论】:

  • 我想这是我的错,因为我没有更详细地解释我认为我需要它的东西,但是数据提供者毕竟似乎是更好的做法。我实际上在做的是使用 $data 进行测试,此时依赖测试改变了数据的值,然后用于下一个测试,但现在我突然想到我可以轻松地将这两个测试解耦并使用数据提供程序.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
  • 2011-07-05
相关资源
最近更新 更多