PHPUnit:强制显示断言的值

2022-08-31 00:55:17

当 PHPUnit 中的测试失败时,将显示实际值和预期值。
但当测试通过时,不会显示此信息。

如何强制PHPUnit始终显示预期和实际的断言结果?


答案 1

运行

phpunit --testdox

将显示每个测试名称。因此,作为一种解决方法,您可以将预期和实际的断言结果合并到测试名称中...仍然只是一个解决方法...


答案 2

由于您最有可能用$this->断言来称呼断言...(),您可以在测试用例中覆盖这些方法。简单示例:

class YourTestCase extends PHPUnit_Framework_TestCase {
    ...
    static private $messages = array();
    ...
    static public function assertSame($var1, $var2, $message = '') {
        parent::assertSame($var1, $var2, $message);
        // assertSame() throws an exception if not true, so the following
        // won't occur unless the messages actually are the same
        $success = print_r($var1, true) . ' is the same as '
                 . print_r($var2, true);
        self::$messages = array_merge(self::$messages, array($success));
    }

    static public function tearDownAfterClass() {
        echo implode("\n", self::$messages);
    }
}

当然,tearDownAfterClass() 可能还不够晚,无法满足您的喜好。这与断言失败不同。


推荐