如何跳过PHPunit中的测试?
我正在与jenkins一起使用phpunit,我想通过在XML文件如何跳过PHPunit中的测试?,php,phpunit,Php,Phpunit,我正在与jenkins一起使用phpunit,我想通过在XML文件phpunit.XML 我知道我可以在命令行上使用: phpunit——过滤断开的测试内容,并仅过滤单个测试 既然标记仅用于代码覆盖,我如何将其转换为XML文件 如果您可以忽略整个文件,我想运行所有测试,而不是总是出现漏洞的测试 <?xml version="1.0" encoding="UTF-8"?> <phpunit> <testsuites> <test
phpunit.XML
我知道我可以在命令行上使用:
phpunit——过滤断开的测试内容,并仅过滤单个测试
既然
标记仅用于代码覆盖,我如何将其转换为XML文件
如果您可以忽略整个文件,我想运行所有测试,而不是总是出现漏洞的
测试
<?xml version="1.0" encoding="UTF-8"?>
<phpunit>
<testsuites>
<testsuite name="foo">
<directory>./tests/</directory>
<exclude>./tests/path/to/excluded/test.php</exclude>
^-------------
</testsuite>
</testsuites>
</phpunit>
/测试/
./tests/path/to/excluded/test.php
^-------------
跳过已损坏或需要以后继续进行的测试的最快、最简单的方法是在单个单元测试的顶部添加以下内容:
$this->markTestSkipped('must be revisited.');
有时,根据定义为php代码的自定义条件,跳过特定文件中的所有测试非常有用。您可以使用makeTestSkipped工作的setUp函数轻松地完成这项工作
protected function setUp()
{
if (your_custom_condition) {
$this->markTestSkipped('all tests in this file are invactive for this server configuration!');
}
}
您的自定义条件可以通过一些静态类方法/属性、phpunit引导文件中定义的常量甚至全局变量来传递。KO:修复测试怎么样?顺便说一句,你好,来自威利;-)我没有编写测试,这是一些不相关的东西,也不想更改核心文件——毫无疑问,您可以这样做。这是一个非常奇怪的要求:您提到了过滤器,但它不能帮助您,因为它排除了所有路径。否则,
-你可以发布建议的phpunit.xml.dist文件吗?这是我尝试过的,但它仍然说没有
的893个测试和带有
的893个测试运行大约需要20分钟,有没有简单的方法可以查看它将运行多少个测试?目前,我必须等到第一行完成。。。。。。。63/893(7%)
@fitype:那么您可能指定了错误的路径。它对我很有效。不确定是否有可能获得测试计数。PS:单元测试不应该运行太长时间。我建议使用@group
注释和按性质拆分测试。您始终可以将目录或测试添加到xml配置文件中,但是,如果这是一个控制器或类似文件,这实际上并不实用,因为该文件中可能有几十个其他测试。我猜如果您没有访问单元测试的权限,我不知道为什么,那么您除了排除之外别无选择。因为它是一个静态方法(至少在PHPUnit 3中),并且一些类使用后期静态绑定afaik,您应该使用static::markTestSkipped(“”)
而不是$this->
。它将在较新的PHP版本中生成警告。签名:公共静态函数markTestSkipped($message='')
需要完整单元测试文件的更好示例。不仅仅是一个片段。@DanielW。示例显示了$this->markTestSkipped()
@null您可以看到,markTestSkipped()
仍然是一个静态方法。什么是Config
类?我把它放在哪里?@cronfy它可以是任何全局作用域可访问类(单例/寄存器设计模式),甚至可以是phpunit中引导文件中设置的全局变量。基本上,逻辑是:如果($testsfromthisfilesshouldbeskipped){$this->markTestSkipped(…);}删除条件,您的答案将是直接的。。。“markTestSkipped在安装程序中跳过了整个文件”@SparK我明白你的意思,但我提供了有条件跳过整个测试类的方法。我对它做了一点修改,取消了我习惯的做法,取而代之的是一般规则。