【问题标题】:Symfony2 UnitTests fail at first run, succeeds on all subsequent runsSymfony2 单元测试在第一次运行时失败,在所有后续运行中都成功
【发布时间】:2013-05-30 08:37:20
【问题描述】:

当我在 Symfony2 项目上运行 phpunit 时,测试总是在第一次运行时失败:

$ phpunit -c app src/Project/MyBundle/Tests/Controller/SomeTest.php 
PHPUnit 3.7.19 by Sebastian Bergmann.

Configuration read from src/main/app/phpunit.xml

E

Time: 1 second, Memory: 24.25Mb

There was 1 error:

1) Project\MyBundle\Tests\Controller\RegistrationTest::testStdRegistration
PHPUnit_Framework_Exception: PHP Fatal error:  Interface 'Swift_Events_SendListener' not found in src/main/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/MessageLogger.php on line 19
PHP Stack trace:
PHP   1. {main}() -:0
PHP   2. require_once() -:542


FAILURES!
Tests: 1, Assertions: 0, Errors: 1.

如果我然后重新开始测试,一切都会顺利通过。没有错误。我认为这一切都归结为文件 cache/test/appTestDebugProjectContainer.php 的存在 在第一次运行测试之前,此文件不存在。在此运行之后,它会被创建并在以下测试中使用。我一直觉得 Symfony2 确保所有相关文件都是在第一次测试运行之前创建的,但情况似乎并非如此。 那么我该如何解决这个问题呢?我应该在测试开始之前尝试手动预热缓存,还是必须修改我的测试才能等待创建缓存文件?

【问题讨论】:

    标签: php symfony phpunit


    【解决方案1】:

    在执行测试之前预热您的测试环境缓存以避免此错误。

    app/console cache:warmup --env=test
    

    【讨论】:

    • 谢谢你!它解决了这个问题。不过我很好奇为什么 Symfony 在引导测试时没有创建所需的文件。
    猜你喜欢
    • 1970-01-01
    • 2015-02-19
    • 2021-09-08
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多