我有一个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