2013-04-17 21 views
17

PHPUnitを使用してテストを無視するために、PHPテストメソッドの隣に配置する属性は何ですか?phpunitの内容を変更せずにテストメソッドを無視するにはどうしたらいいですか?

私はNUnitのために属性があることを知っている:

<?php 
require_once 'PHPUnit/Framework.php'; 

class SampleTest extends PHPUnit_Framework_TestCase 
{ 
    public function testSomething() 
    { 
     // Optional: Test anything here, if you want. 
     $this->assertTrue(TRUE, 'This should already work.'); 

     // Stop here and mark this test as incomplete. 
     $this->markTestIncomplete(
      'This test has not been implemented yet.' 
     ); 
    } 
} 
?> 

答えて

7

あなたはPHPUnitのテストを無視する方法markTestIncomplete()を使用することができます"test"で始まる名前は避けてください。そうすれば、PHPUnitに@testを使って実行するよう指示しない限り、そのテストは実行されません。

また、あなたはPHPUnitのto skip a specific testを言うことができる:

<?php 
class ClassTest extends PHPUnit_Framework_TestCase 
{  
    public function testThatWontBeExecuted() 
    { 
     $this->markTestSkipped('PHPUnit will skip this test method'); 
    } 
    public function testThatWillBeExecuted() 
    { 
     // Test something 
    } 
} 
+0

は答えてくれてありがとう、私はテストの内容を変更する必要はありません。時々私はいくつかのテストを無視し、テストフローでそれらを再追加したいことがあります。 –

12

最も簡単な方法は、単に名前を変更するには、次のようになります。

[Test] 
[Ignore] 
public void IgnoredTest() 
21

あなたはgroup annotationでテストをタグ付けして実行からそれらのテストを除外することができます。

/** 
* @group ignore 
*/ 
public void ignoredTest() { 
    ... 
} 

その後、あなたはすべてのテストが、このような無視のテストを実行することができます:あなたはメソッドその後、最初にtestであなたの方法をいない名前場合

phpunit --exclude-group ignore 
1

はPHPUnitのによって実行されることはありません(here参照)。

public function willBeIgnored() { 
    ... 
} 

public function testWillBeExecuted() { 
    ... 
} 

あなたはとにかくそれを実行するために、注釈@testを追加することができますtestと起動しない、実行する方法をしたい場合。あなたは、あなたが追加したり、注釈を調整するために喜んでいる場合は、テストの内容を変更したくないあなたのコメントの1で提案されているので

/** 
* @test 
*/ 
public function willBeExecuted() { 
    ... 
} 
1

、あなたはテストを無視する@requires注釈を悪用できます。

これが唯一のPHP 9000まで動作します
<?php 

use PHPUnit\Framework\TestCase; 

class FooTest extends TestCase 
{ 
    /** 
    * @requires PHP 9000 
    */ 
    public function testThatShouldBeSkipped() 
    { 
     $this->assertFalse(true); 
    } 
} 

が解除され、テストを実行してからの出力は、あまりにも、少し誤解を招くようになります。

There was 1 skipped test: 

1) FooTest::testThatShouldBeSkipped 
PHP >= 9000 is required. 

は参考のため、以下を参照してください。

+0

+1000は確かに受け入れられた答えになるはずです:) – cvng

関連する問題