phpunit重置测试之间的环境

时间:2011-09-01 10:05:44

标签: php symfony phpunit

我有一个symfony2应用程序,我正在使用phpunit。

我有一些单元测试,我使用模拟来模拟AppKernel和功能测试,这些测试向应用程序发出“真实”请求。单独运行单元测试或功能测试时,一切正常。

当我想立刻运行所有测试时,这很糟糕。单元测试完成后,phpunit就会停止,告诉我:

Fatal error: Cannot redeclare class AppKernel in C:\Users\sebastian\workspace\ppInterface\app\AppKernel.php on line 35

我不明白这一点,因为我认为phpunit会在自己的环境中运行每个测试。情况似乎并非如此。我能做些什么来使事情正确并“重置”测试运行的环境?

1 个答案:

答案 0 :(得分:12)

默认情况下,PHPUnit不会重置所有内容,尽管可能。

包含 - 您的案例中的问题 - 未重置(并且不能在一个单一过程中)。解决方案是使用require_once而不是require,或者在phpunit.xml文件或测试用例(@runTestsInSeparateProcesses)或测试方法中使用进程隔离({ {1}})。

您还可以影响测试之间重置的内容:

  • @runInSeparateProcess
  • @backupGlobals