PHPUnit @depends annoation不起作用

时间:2016-10-17 07:04:48

标签: php yii2 phpunit

当我使用@depends(在Yii2中)对phpunit testcase进行编码时,将跳过带有@depends的测试用例。似乎无法找到依赖的函数。 这是代码:

测试用例代码:

 class GoodsServiceTest extends \PHPUnit_Framework_TestCase
{
    private $service;

    public function pull(){
        return [1,2];
    }

    /**
     * @depends pull
     */
    public function testPush($stack){
        $this->assertEquals([1,2],$stack);
    }
}
运行测试后

控制台消息:

E:\xampp_5_5_32\php\php.exe C:/Users/huzl/AppData/Local/Temp/ide-phpunit.php --bootstrap E:\MIC\vagrant\rental\frontend\tests\_bootstrap.php --no-configuration --filter "/::testPush( .*)?$/" frontend\tests\example\GoodsServiceTest E:\MIC\vagrant\rental\frontend\tests\example\GoodsServiceTest.php
Testing started at 15:35 ...
PHPUnit 4.8.27 by Sebastian Bergmann and contributors.

This test depends on "frontend\tests\example\GoodsServiceTest::pull" to pass.

Time: 430 ms, Memory: 4.50MB

No tests executed!

Process finished with exit code 0

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

测试只能依赖于其他测试。 pull不是测试,因为它没有testPrefix。

但你真正想要使用的是data provider

class GoodsServiceTest extends \PHPUnit_Framework_TestCase
{
    private $service;

    public function getStacks()
    {
        return [ //a list of test calls
                   [ // a list of test arguments
                       [1,2], //first argument
                       3 //second argument
                   ],
                   [
                       [3,5],
                       8
                   ]
               ];
    }


    /**
     * @dataProvider getStacks
     */
    public function testStacks($stack, $expectedResult)
    {
        $this->assertEquals($expectedResult, array_sum($stack));
    }
}

答案 1 :(得分:1)

我发现我必须运行整个测试类GoodsServiceTest,而不仅仅是测试方法testPush。与此同时,我必须在testPull之前确认testPush。 }。 希望这个答案能帮助别人

class GoodsServiceTest extends \PHPUnit_Framework_TestCase
{
    private $service;

    public function testPull(){
          return [1,2];
    }


    /**
     * @depends pull
     */
    public function testPush($stack){
        $this->assertEquals([1,2],$stack);
    }

}