我希望能够编写使用自定义注释的测试来确定测试是通过还是失败。
我在代码中使用自定义异常,它将getter方法添加到基本Exception类中。例如:
class MyException extends Exception
{
// ...
public function getFoo()
{
//...
}
}
我希望能够编写一个测试foo具有给定值的测试,如下所示:
class BarTest extends PHPUnit_Framework_TestCase {
/**
* @expectedException MyException
* @expectedExceptionFoo 'baz'
*/
public function testBarThrowsMyExceptionWithFooEqualsBaz()
{
$bar = new Bar();
$bar->throwExceptionWithFooEqualsBaz();
}
}
目前,我正在制定一个涉及扩展PHPUnit_Framework_TestCase
的解决方案,但这会覆盖runTest()
,但由于runTest()
使用了如此多的私有方法,因此它变得格外复杂。类变量,我不得不重写超过一半的类(大约1200行)。有更简单的方法吗?
对一个更简单的解决方案的一个暗示是PHPUnit_Framework_TestCase
具有以下可能有用的方法:
public function setUseErrorHandler($useErrorHandler)
protected function setUseErrorHandlerFromAnnotation()
protected function setExpectedExceptionFromAnnotation()
但是我一直在浏览PHPUnit的代码,看看我如何使用它们,并且有太多的间接注释,现在它看起来更难选择?
答案 0 :(得分:1)
这可能是一个起点:
https://codesymphony.co/creating-your-own-phpunit-requires-annotations/
它描述了如何实现自定义@requires
注释,但代码可以用作实现任何自定义注释的跳转点。