2

谁能帮我理解为什么这些单元测试在通过本地设置时在 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 配置。先感谢您!

4

1 回答 1

5

所以我认为这些测试失败是因为目录名称与 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在这种情况下,目录结构无效。

于 2015-12-30T10:10:02.273 回答