PHP测试在本地传递但在使用Composer,PSR-4自动加载的Travis CI上失败

时间:2015-10-27 11:42:29

标签: php phpunit travis-ci psr-4

任何人都可以帮助我理解为什么这些单元测试在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。提前谢谢!

1 个答案:

答案 0 :(得分:3)

所以我认为这些测试失败了,因为目录名称与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的目录结构无效。