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

时间:2013-01-07 09:34:25

标签: phpunit

我正在尝试测试我班级的构造函数。它只需要一个必须是字符串的参数。所以我写了这个测试:

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()?或者有解决方法吗?

祝你好运, 套筒

编辑:

Hello Cyprian,

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

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)
                  );

    }

    ...

}

现在它完美无缺,即使我根本不喜欢这种符号。

1 个答案:

答案 0 :(得分:1)