如何在不修改其内容的情况下忽略 phpunit 中的测试方法?
Posted
技术标签:
【中文标题】如何在不修改其内容的情况下忽略 phpunit 中的测试方法?【英文标题】:How can I ignore a test method in phpunit without modifying its content? 【发布时间】:2013-04-10 07:27:49 【问题描述】:为了忽略使用 phpUnit 的测试,应该在 PHP 测试方法旁边放置什么属性?
我知道 NUnit 的属性是:
[Test]
[Ignore]
public void IgnoredTest()
【问题讨论】:
【参考方案1】:最简单的方法是更改测试方法的名称,避免名称以“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
【讨论】:
【参考方案2】:由于您在其中一个 cmets 中建议您不想更改测试的内容,如果您愿意添加或调整注释,您可以滥用 @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.
参考见:
https://phpunit.de/manual/current/en/incomplete-and-skipped-tests.html#incomplete-and-skipped-tests.skipping-tests-using-requires【讨论】:
【参考方案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将不会执行该方法(参见here)。
public function willBeIgnored()
...
public function testWillBeExecuted()
...
如果你想执行一个不以test
开头的方法,你可以添加注解@test
来执行它。
/**
* @test
*/
public function willBeExecuted()
...
【讨论】:
【参考方案5】:您可以使用group annotation 标记测试并从运行中排除这些测试。
/**
* @group ignore
*/
public void ignoredTest()
...
然后你可以像这样运行所有测试但忽略的测试:
phpunit --exclude-group ignore
【讨论】:
以上是关于如何在不修改其内容的情况下忽略 phpunit 中的测试方法?的主要内容,如果未能解决你的问题,请参考以下文章
Excel 2010:如何在不修改其输入值的情况下跨多个单元格更改公式?