为了忽略使用 PHPUnit 的测试,应该放在 PHP 测试方法旁边的属性是什么?
我知道对于 NUnit,属性是:
[Test]
[Ignore]
public void IgnoredTest()
为了忽略使用 PHPUnit 的测试,应该放在 PHP 测试方法旁边的属性是什么?
我知道对于 NUnit,属性是:
[Test]
[Ignore]
public void IgnoredTest()
您可以使用组注释标记测试并从运行中排除这些测试。
/**
* @group ignore
*/
public void ignoredTest() {
...
}
然后您可以运行所有测试但忽略测试,如下所示:
phpunit --exclude-group ignore
最简单的方法是只更改测试方法的名称并避免名称以“test”开头。这样,除非您告诉 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.
供参考,请参阅: