Phpunit 使用相同的预期异常测试多个异常

Phpunit 使用相同的预期异常测试多个异常,phpunit,Phpunit,除其他外,我正在尝试测试我的类的构造函数。它只需要一个必须是字符串的参数。所以我写了这个测试: class categoryTest extends PHPUnit_Framework_TestCase { public function testConstructor() { $this->setExpectedException('Exception', 'Unknown data type.'); $objCategory = new category(1);

除其他外,我正在尝试测试我的类的构造函数。它只需要一个必须是字符串的参数。所以我写了这个测试:

class categoryTest extends PHPUnit_Framework_TestCase {

  public function testConstructor() {

    $this->setExpectedException('Exception', 'Unknown data type.');
    $objCategory = new category(1);

    $this->setExpectedException('Exception', 'Unknown data type.');
    $objCategory = new category(-500);

    $this->setExpectedException('Exception', 'Unknown data type.');
    $objCategory = new category(true);

    $this->setExpectedException('Exception', 'Unknown data type.');
    $objCategory = new category(array());

    ...

  }

  public function testNextMethod() {

  }

}
正如你所看到的,我希望每次都有相同的例外

这似乎工作得很好,但脚本在完成后将跳到testNextMethod()

$this->setExpectedException('Exception', 'Unknown data type.');
$objCategory = new category(1);
。我是否必须为每个测试编写自己的testMethod()?或者有解决办法吗

致以最良好的祝愿, 马弗

编辑:

你好,塞浦路斯人

非常感谢您的回复。我这样解决了我的问题:

class categoryTest extends PHPUnit_Framework_TestCase {

    protected $backupGlobals = FALSE;

    /**
      *
      * @dataProvider provider
      *
      **/
    public function testMuff($strCategory) {

      $this->setExpectedException('Exception', 'Unknown data type.');
      $objCategory = new category($strCategory);

    }

    public function provider() {

      $objHIS = new DDDBL('HIS');

      return array(array(1),
                   array(-500),
                   array(true),
                   array(array()),
                   array($objHIS)
                  );

    }

    ...

}

现在它工作得很好,即使我一点也不喜欢这个符号。

您要找的是
数据提供者
,请看这里:


“注意:测试异常时应尽可能具体。对过于泛型的类进行测试可能会导致不良副作用。因此,不再允许使用@expectedException或setExpectedException()测试异常类。”。资料来源: