如何讓PHPUnit在相關人員出現數據集錯誤時跳過測試?如何在PHPUnit中跳過錯誤測試?
作品
如果我的數據提供者只有東西導致的錯誤,那麼它會適當地跳過了相關測試。 注意的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'],
給數據提供者。使用@dataProvider
時
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
測試從their docs:
注
當TES t取決於使用數據提供者的測試,依賴測試將在測試取決於成功時執行,至少有一個數據集爲。
我想跳過一些測試放在一起,如果在依賴測試所提供的資料的任何部分,都會導致錯誤。有什麼辦法可以解決這個限制嗎?
可以fork these files進行快速測試,如果你想,或者只是克隆:
git clone https://github.com/admonkey/phpunittest.git
有趣的想法。問題不在於他忽略了「@ depends」 - 他只是滿足於其中一項測試與數據一起工作... – iRaS