我有一个symfony2应用程序,我正在使用phpunit。
我有一些单元测试,我使用模拟来模拟AppKernel和功能测试,这些测试向应用程序发出“真实”请求。单独运行单元测试或功能测试时,一切正常。
当我想立刻运行所有测试时,这很糟糕。单元测试完成后,phpunit就会停止,告诉我:
Fatal error: Cannot redeclare class AppKernel in C:\Users\sebastian\workspace\ppInterface\app\AppKernel.php on line 35
我不明白这一点,因为我认为phpunit会在自己的环境中运行每个测试。情况似乎并非如此。我能做些什么来使事情正确并“重置”测试运行的环境?
答案 0 :(得分:12)
默认情况下,PHPUnit不会重置所有内容,尽管可能。
包含 - 您的案例中的问题 - 未重置(并且不能在一个单一过程中)。解决方案是使用require_once
而不是require
,或者在phpunit.xml
文件或测试用例(@runTestsInSeparateProcesses
)或测试方法中使用进程隔离({ {1}})。
您还可以影响测试之间重置的内容:
@runInSeparateProcess
@backupGlobals