我正在编写一个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次,但是当这显然是错误的时候它仍然会通过。
我发现这很奇怪,因为我在以前的测试中有类似的检查,它们正常工作。
还有其他人遇到过这样的问题吗?
答案 0 :(得分:2)
markTestIncomplete抛出特殊异常,女巫结束测试。将跳过对模拟中“预期”的检查。
public static function markTestIncomplete($message = '')
{
throw new PHPUnit_Framework_IncompleteTestError($message);
}
答案 1 :(得分:0)
找到问题的原因。这似乎是由对$this->markTestIncomplete()
的调用引起的。出于某些原因,在测试中使用它会导致它不会失败,至少在这种情况下,即使它应该。
删除对markTestIncomplete
的调用会使其正常运行并在应有时失败。我倾向于将markTestIncomplete
方法保留在测试中,直到它完成100%,并假设如果我运行测试,即使处于不完整状态,如果不满足预期,它也会失败。这不是一个公平的假设吗?这是PHPUnit中的错误吗?