Подтвердить что ты не робот

Как я могу игнорировать тестовый метод в phpunit без изменения его содержимого?

Каков атрибут, который следует разместить рядом с методом тестирования PHP, чтобы игнорировать тест с помощью PHPUnit?

Я знаю, что для NUnit атрибут:

[Test]
[Ignore]
public void IgnoredTest()
4b9b3361

Ответ 1

Вы можете пометить тест с помощью аннотации и исключить те тесты из прогона.

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

Затем вы можете запустить все тесты, но проигнорировать такие тесты:

phpunit --exclude-group ignore

Ответ 2

Самый простой способ - просто изменить имя метода тестирования и избежать имен, начинающихся с "теста". Таким образом, если вы не скажете PHPUnit выполнить его с помощью @test, он не выполнит этот тест.

Кроме того, вы можете указать PHPUnit пропустить конкретный тест:

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

Ответ 3

Вы можете использовать метод 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.'
        );
    }
}
?>

Ответ 4

Если вы назовете свой метод не с test в начале, то метод не будет выполнен PHPUnit (см. здесь).

public function willBeIgnored() {
    ...
}

public function testWillBeExecuted() {
    ...
}

Если вы хотите, чтобы выполняемый метод не начинался с test, вы можете добавить аннотацию @test для ее выполнения.

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

Ответ 5

Поскольку в одном из ваших комментариев вы указали, что не хотите изменять содержимое теста, если вы хотите добавить или отредактировать аннотации, вы можете использовать аннотацию @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.

Для справки см.: