【问题标题】:PHP tests pass locally but fail on Travis CI using Composer, PSR-4 autoloadPHP 测试在本地通过,但在 Travis CI 上使用 Composer、PSR-4 自动加载失败
【发布时间】:2016-01-26 19:28:51
【问题描述】:

谁能帮我理解为什么这些单元测试在通过本地设置时在 CI 中失败的原因。

存储库位于https://github.com/jabranr/test-ci

测试在https://travis-ci.org/jabranr/test-ci

测试在 CI 中失败并出现致命错误:PHP Fatal error: Class 'JRI\JabranCI\Exception\FooBarException' not found in /home/travis/build/jabranr/test-ci/test/exception/FooBarExceptionTest.php on line 11

包使用 PSR-4 自动加载。这是composer.jsonphpunit configuration。提前谢谢!

【问题讨论】:

    标签: php phpunit travis-ci psr-4


    【解决方案1】:

    所以我认为这些测试失败是因为目录名称与 PSR-4 自动加载区分大小写的方案不匹配。

    在这种特殊情况下,这与 OSX 的不区分大小写性质直接相关。虽然单元测试运行良好并在 OSX 本地机器上通过,但在 Travis CI 上却一直失败,因为它基于 Linux (Ubuntu) 容器进行测试。

    所以基本上从上面的例子来看,当调用JRI\JabranCI\Exception\FooBarException时,目录结构应该是src/JRI/JabranCI/Exception/FooBarException.php

    通用示例:

    如果有一个类Baz 具有命名空间Foo\Bar,那么使用PSR-4 一个有效的目录结构是src/Foo/Bar/Baz.php。这种情况下src/foo/bar/Baz.php的目录结构无效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多