UnitTests失败,手动测试通过

时间:2010-08-20 12:53:59

标签: php unit-testing phpunit

我的代码中有一些奇怪的东西,所以我不得不问。

我有一个测试的一部分:

public function testGetAddresses()
{
    //$this->markTestIncomplete('Not implemented yet');
    $this->assertTrue($this->_prs->getAddresses() instanceof Crm_Collection);
}

此测试失败。

但是当我这样做时:

if ($entity->getAddresses() instanceof Crm_Collection) {
    echo "TRUE!";
} else {
    echo "FALSE!";
}

输出TRUE!

有人知道发生了什么,或者这可能是phpunit中的错误吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

我怀疑这是PHPUnit的错误。 由于你在两个不同的对象上调用getAddresses()方法,我猜测在失败时这个方法确实会返回不是Crm_Collection的东西。

getAddresses()方法是否有可能返回null或抛出异常?

答案 1 :(得分:1)

为什么vadimbelyaev说:

我不认为这是phpunit的问题,请仔细检查您的代码。

此外,您可以使用:

$this->assertType("Classname", $object)

所以如果失败,你会得到一个很好的错误。 (Phpunit会告诉你“期望的课程,得到空”而不是“预期真实,得到假”,并在调试时帮助很多:))

答案 2 :(得分:0)

其他测试可以吗?你是从浏览器运行测试吗?

当您从命令行运行PHP代码时,我强烈建议您设置php.ini的正确路径。否则PHP将使用可能与您当前的php.ini

不同的默认值

不确定这是否能解决您的麻烦,但很高兴知道。在我发现这个之前,我花了几个小时。

php -c "c:/program files/apache software foundation/Apache2.2/" -f /path/to/your/script.php