1

我进行了一些测试,其中正在测试的代码输出了一些error_log信息(因为我也在测试失败,这是预期的)

例如

<?php
Class X {
    function dosomething(){
            error_log('did it');
            return true;
    }
}

和测试:

<?php
require_once 'X.php';
class xTest extends PHPUnit_Framework_TestCase {
    public function testDo(){
            $x = new X();
            $this->assertTrue( $x->dosomething(), 'dosomething returns true');
    }
}

当在 php_unit 上运行时没有 --process-isolation给我一个很好的.和我正在测试的任何东西。

但是,当我运行时 --process-isolation我得到:

1) test::a with data set #1 'a'
RuntimeException: did it

为什么会这样?我被困在 3.4.12 版本上(对此无能为力),但在更新日志中没有发现任何有趣的内容。

这是一个示例会话:

xxx$ phpunit xTest.php
PHPUnit 3.4.12 by Sebastian Bergmann.

did it
.

Time: 0 seconds, Memory: 4.50Mb

OK (1 test, 1 assertion)

shell return code: 0
xxx$ phpunit --process-isolation xTest.php
PHPUnit 3.4.12 by Sebastian Bergmann.

E

Time: 0 seconds, Memory: 4.50Mb

There was 1 error:

1) xTest::testDo
RuntimeException: did it


FAILURES!
Tests: 1, Assertions: 0, Errors: 1.

shell return code: 2

编辑:我正在搜索“phpunit runtimeexception error_log”,提交后 5 秒它已经是最高搜索结果 :( 那里没有任何内容。

但我来这里是为了编辑并说这个:添加$this->setExpectedException('RuntimeException');绝对不能抓住这个。同样的结果发生。

4

1 回答 1

1

error_log我的猜测是外部和内部过程中的配置之间存在差异。默认情况下,当error_log()从 CLI 运行时,它将被写入stderr并导致测试失败。你需要做的是弄清楚为什么会有差异。我猜你有一些在外部进程中运行的代码改变了这个没有在内部运行的配置。

于 2013-04-30T19:52:34.837 回答