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 autoload の大文字と小文字を区別するスキームと一致しないため、これらのテストが失敗していると考えました。

この特定のケースでは、これはOSX の大文字と小文字を区別しない性質に直接関係していました。単体テストは OSX ローカル マシンでは問題なく機能し、合格しましたが、Travis CI ではテストが Linux (Ubuntu) コンテナーに基づいているため、失敗し続けました。

したがって、基本的に上記の例から、を呼び出すときJRI\JabranCI\Exception\FooBarException、ディレクトリ構造はsrc/JRI/JabranCI/Exception/FooBarException.php

一般的な例:

Baz名前空間を持つクラスがある場合、Foo\BarPSR-4 を使用すると有効なディレクトリ構造はsrc/Foo/Bar/Baz.php. このような場合、 のディレクトリ構造src/foo/bar/Baz.phpは無効です。

于 2015-12-30T10:10:02.273 に答える