Каков атрибут, который следует разместить рядом с методом тестирования PHP, чтобы игнорировать тест с помощью PHPUnit?
Я знаю, что для NUnit атрибут:
[Test]
[Ignore]
public void IgnoredTest()
Каков атрибут, который следует разместить рядом с методом тестирования PHP, чтобы игнорировать тест с помощью PHPUnit?
Я знаю, что для NUnit атрибут:
[Test]
[Ignore]
public void IgnoredTest()
Вы можете пометить тест с помощью аннотации и исключить те тесты из прогона.
/**
* @group ignore
*/
public void ignoredTest() {
...
}
Затем вы можете запустить все тесты, но проигнорировать такие тесты:
phpunit --exclude-group ignore
Самый простой способ - просто изменить имя метода тестирования и избежать имен, начинающихся с "теста". Таким образом, если вы не скажете 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
}
}
Вы можете использовать метод 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.'
);
}
}
?>
Если вы назовете свой метод не с test
в начале, то метод не будет выполнен PHPUnit (см. здесь).
public function willBeIgnored() {
...
}
public function testWillBeExecuted() {
...
}
Если вы хотите, чтобы выполняемый метод не начинался с test
, вы можете добавить аннотацию @test
для ее выполнения.
/**
* @test
*/
public function willBeExecuted() {
...
}
Поскольку в одном из ваших комментариев вы указали, что не хотите изменять содержимое теста, если вы хотите добавить или отредактировать аннотации, вы можете использовать аннотацию @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.
Для справки см.: