PHPUnit-使用数据提供程序忽略测试
我有两个测试的特点,每个测试都有一个单独的数据提供者:PHPUnit-使用数据提供程序忽略测试,phpunit,Phpunit,我有两个测试的特点,每个测试都有一个单独的数据提供者: trait StringTest { /** * @dataProvider stringProvider */ public function testString($expression, $string) { //echo $name; $this->assertInternalType('string', $string, "Not a string."); $thi
trait StringTest
{
/**
* @dataProvider stringProvider
*/
public function testString($expression, $string)
{
//echo $name;
$this->assertInternalType('string', $string, "Not a string.");
$this->assertRegExp($expression, $string);
}
/**
* @dataProvider nonmatchingStringProvider
*/
public function testNonmatchingString($expression, $string)
{
//echo $name;
$this->assertInternalType('string', $string, "Not a string.");
$this->assertNotRegExp($expression, $string);
}
}
我有一些测试类,这些测试类有要使用testString
进行测试的用例,但没有使用nonmatchingStringProvider
进行测试。如果nonmatchingStringProvider
没有任何案例,我想完全忽略testNonmatchingString
。完全忽略。不报告任何类型的错误、警告或跳过。(在中,开发人员接受了将测试标记为跳过的解决方案。此处不接受跳过。)
我可以把这个特征分成两个不同的特征。我宁愿不那样做
通过在类中省略
nonmatchingStringProvider
或定义nonmatchingStringProvider
并使其返回空数组,可以编码或配置phpunit以这种方式运行吗?为什么不简单地远程测试?反正它死了,什么也没测试。。。还是我遗漏了什么?这是一种特质。多个测试套件使用它。不是所有的测试套件都会测试不匹配的字符串。我认为不可能跳过单个测试,所以我担心您必须具备两个特点。最后,正如您所说:不是每个测试都需要测试不匹配的字符串。两个不同的用例,两个不同的特性。您也可以尝试使用nonmatchingStringProvider
的默认实现,但是您的测试仍然可能报告问题,因为这样的测试不会执行任何断言。我会选择拆分trait。我有另一个例子也有同样的问题,但是公共代码是在扩展的抽象类中,而不是在trait中。在这种情况下,将公共代码拆分为多个单元不是一个选项。