有人能帮我理解为什么这些单元测试在传递本地设置时在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.json和phpunit的配置。提前谢谢!
所以我认为这些测试失败了,因为目录名称与PSR-4自动加载区分大小写的方案不匹配。
在这种特殊情况下,这与OSX的不区分大小写特性直接相关。虽然单元测试运行良好,并在OSX本地机器上通过,但它们在Travis CI上不断失败,因为它基于Linux(Ubuntu)容器进行测试。
所以从上面的例子来看,当调用JRI'JabranCI'Exception'FooBarException
时,目录结构应该是src/JRI/JabranCI/Exception/FooBarException.php
一般示例:
如果存在具有命名空间Foo'Bar
的类Baz
,则使用PSR-4,有效的目录结构是src/Foo/Bar/Baz.php
。在这种情况下,src/foo/bar/Baz.php
的目录结构是无效的。