依存関係にあるデータセットでエラーが発生した場合、PHPUnitでテストをスキップするにはどうすればよいですか?PHPUnitでエラーのテストをスキップするには?
作品
私のデータプロバイダが唯一のエラーを引き起こすものを持っている場合、それは適切に依存テストをスキップします。私は、その後に起因するエラーが発生しても、プロバイダに良いデータを1つ追加した場合注Skipped: 1
class DataProviderDependsTest extends PHPUnit_Framework_TestCase
{
public function getDataProvider(){
return [
['non-existent_file.txt'],
];
}
/**
* @dataProvider getDataProvider
*/
public function testCanBeDependedOn($data){
$actual = file_get_contents($data);
$this->assertSame('expected',$actual);
}
/**
* @dataProvider getDataProvider
* @depends testCanBeDependedOn
*/
public function testCanDepend($data){
$this->assertTrue(false);
}
}
PHPUnit 5.5.0 by Sebastian Bergmann and contributors. ES 2/2 (100%) Time: 28 ms, Memory: 4.00MB There was 1 error: 1) DataProviderDependsTest::testCanBeDependedOn with data set #0 ('non-existent_file.txt') file_get_contents(non-existent_file.txt): failed to open stream: No such file or directory /home/xenial/phpunittest/test.php:16 ERRORS! Tests: 1, Assertions: 0, Errors: 1, Skipped: 1.
は、しかし
機能しません残り、PHPUnitは実行を開始しますすべて dとにかく独立したテスト(エラーのある対応するデータセットでさえ)。何もスキップしません。 注:データプロバイダに['real_file.txt'],
が追加されました。
class DataProviderDependsTest extends PHPUnit_Framework_TestCase
{
public function getDataProvider(){
return [
['real_file.txt'],
['non-existent_file.txt'],
];
}
/**
* @dataProvider getDataProvider
*/
public function testCanBeDependedOn($data){
$actual = file_get_contents($data);
$this->assertSame('expected',$actual);
}
/**
* @dataProvider getDataProvider
* @depends testCanBeDependedOn
*/
public function testCanDepend($data){
$this->assertTrue(false);
}
}
PHPUnit 5.5.0 by Sebastian Bergmann and contributors. .EFF 4/4 (100%) Time: 19 ms, Memory: 4.00MB There was 1 error: 1) DataProviderDependsTest::testCanBeDependedOn with data set #1 ('non-existent_file.txt') file_get_contents(non-existent_file.txt): failed to open stream: No such file or directory /home/xenial/phpunittest/test.php:16 -- There were 2 failures: 1) DataProviderDependsTest::testCanDepend with data set #0 ('real_file.txt') Failed asserting that false is true. /home/xenial/phpunittest/test.php:25 2) DataProviderDependsTest::testCanDepend with data set #1 ('non-existent_file.txt') Failed asserting that false is true. /home/xenial/phpunittest/test.php:25 ERRORS! Tests: 4, Assertions: 3, Errors: 1, Failures: 2.
を使用した場合、PHPUnitがエラーに@depends
テストをスキップしません:
注
ときTES tは、データプロバイダを使用するテストに依存します。依存するテストが少なくとも1つのデータセットで成功した場合、依存テストが実行されます。
私は依存元のテストで提供されたデータのどの部分でエラーが発生した場合、すべて一緒にいくつかのテストをスキップしたいと思います。この制限を回避する方法はありますか?
あなたは簡単なテストのためのfork these filesあなたがしたい場合、あるいは単にクローンすることができます:あなたがデータに少なくとも一つの通過記録が必要なのかと
git clone https://github.com/admonkey/phpunittest.git
面白いアイデア。問題は、彼が '@ depends'を無視しているということではなく、単にデータのテストの一つが成功したことに満足しているということです... – iRaS