我正在编写一个PHPUnit测试套件,并且遇到了一点问题。
测试如下:
public function testSomething(){
$stub = $this->getMockForAbstractClass(''core'classes'ImportedFile');
$stub->expects($this->exactly(4))
->method('thismethoddoesntexist');
$this->markTestIncomplete('not finished implementing');
}
由于某种原因,这个测试没有失败。应该是这样,因为该方法不存在,因此甚至不会调用一次,更不用说调用4次了。不管我在里面放了什么,即使我放了一个确实存在的方法名,并说我希望它运行100,000次,当这显然是错误的时候,它仍然通过。
我觉得这很奇怪,因为我在以前的测试中有过类似的检查,但都正常工作。
有人遇到过这样的问题吗?
markTestIncomplete抛出特殊异常,即结束测试。在mock中检查' expectations '会被跳过。
public static function markTestIncomplete($message = '')
{
throw new PHPUnit_Framework_IncompleteTestError($message);
}
找到问题的原因。似乎是呼叫$this->markTestIncomplete()
引起的。由于某种原因,在测试中包含这个会导致它不会失败,至少在这个例子中,即使它应该失败。
删除对markTestIncomplete
的调用使其正常运行并在应该的时候失败。我倾向于在测试中保留markTestIncomplete
方法,直到它100%完成,并假设如果我运行测试,即使在其不完整的状态下,如果不满足期望,它应该失败。这样的假设不公平吗?这是PHPUnit的bug吗?