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中。在这种情况下,将公共代码拆分为多个单元不是一个选项。