当我使用@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
有人可以帮忙吗?
答案 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);
}
}