web-dev-qa-db-ja.com

内容を変更せずに、phpunitのテストメソッドを無視するにはどうすればよいですか?

PHPUnitを使用したテストを無視するために、PHPテストメソッドの横に配置する必要がある属性は何ですか?

NUnitの属性は次のとおりです。

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

グループ注釈 を使用してテストにタグを付け、それらのテストを実行から除外できます。

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

次に、すべてのテストを実行できますが、次のようなテストは無視されます。

phpunit --exclude-group ignore
32
Brady Olsen

最も簡単な方法は、テストメソッドの名前を変更し、「test」で始まる名前を避けることです。そうすれば、@testを使用して実行するようにPHPUnitに指示しない限り、そのテストは実行されません。

また、特定のテストをスキップするようにPHPUnit に指示することもできます

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

メソッドmarkTestIncomplete()を使用して、PHPUnitのテストを無視できます。

<?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.'
        );
    }
}
?>
9
Vinoth Babu

コメントの1つでテストの内容を変更したくないと提案したので、注釈を追加または調整したい場合は、@requiresアノテーションはテストを無視します:

<?php

use PHPUnit\Framework\TestCase;

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

これはPHP 9000がリリースされるまで機能し、テストの実行結果は少し誤解を招きます。も:

There was 1 skipped test:

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

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

4
localheinz

最初にtestを付けずにメソッドに名前を付けると、そのメソッドはPHPUnitによって実行されません( ここ を参照)。

public function willBeIgnored() {
    ...
}

public function testWillBeExecuted() {
    ...
}

testで始まらないメソッドを実行したい場合は、アノテーション@testを追加して、とにかくそれを実行できます。

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