任何人都可以帮助我理解为什么这些单元测试在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 configuration。提前谢谢!
答案 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
的目录结构无效。