重置测试之间的环境


phpunit Reset environment between tests

我有一个symfony2应用程序,我使用的是phpunit。

我有一些单元测试,其中我使用mock来模拟AppKernel和功能测试,这些测试向应用程序发出"真实"请求。当单独运行单元测试或功能测试时,一切都很好。

当我想一次运行所有测试时,它变得很讨厌。单元测试一完成,phpunit就停止了,告诉我:

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

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

PHPUnit默认不会重置所有内容,尽管这是可能的。

包含-在您的情况下的问题-不重置(不能在一个进程中)。一个解决方案是使用require_once而不是require,或者在phpunit.xml文件或测试用例(@runTestsInSeparateProcesses)或测试方法(@runInSeparateProcess)中使用进程隔离。

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

  • @backupGlobals
  • @backupStaticAttributes