将@runInSeparateProcess与markTestSkipped()一起使用时出错

时间:2013-04-19 08:33:01

标签: phpunit

 /**
  * Tests Response->redirect
  * @runInSeparateProcess
 */
 public function testRedirect() {

    $this->markTestSkipped();
 }

错误消息:

There was 1 error:

1) ResponseTest::testRedirect

PHPUnit_Framework_Exception: PHP Fatal error:  Uncaught exception 'PDOException' with message 'You cannot serialize or unserialize PDO instances' in -:44

Stack trace:
0 [internal function]: PDO->__sleep()

1 -(44): serialize(Array)

2 -(332): __phpunit_run_isolated_test()

3 {main}
  thrown in - on line 44

Fatal error: Uncaught exception 'PDOException' with message 'You cannot serialize or unserialize PDO instances' in -:44

Stack trace:
0 [internal function]: PDO->__sleep()

1 -(44): serialize(Array)

2 -(332): __phpunit_run_isolated_test()

3 {main}
  thrown in - on line 44

2 个答案:

答案 0 :(得分:1)

当PHPUnit在另一个进程中运行测试时,它将序列化一堆不同的数据以提供给新进程。我假设您在PHPUnit尝试序列化的变量中有一个数据库连接。

答案 1 :(得分:0)

as @SamHennessy提到,这个问题是因为失败时堆栈跟踪中的大量数据

这是因为TestCase中保存了大量的对象,

当断言失败时,会生成并序列化跟踪, 如果跟踪中存在大量数据,则序列化会中断。

在我的情况下,我在测试用例中保存数据集,在跟踪中生成了239555个字节的数据