PHPUnit 测试在 7.1 和 HHVM 中失败,但在 7.0 或 5.6 中失败

PHPUnit tests failing in 7.1 and HHVM but not 7.0 or 5.6

我的项目 运行 使用 PHP 5.6、7.0、7.1 就很好(我还没有尝试 运行 使用 nightly 或 HHVM 对其进行调试),这只是我的测试使用 PHP 7.1、nightly 和 HHVM 时全部失败。我使用 PHP 5.6 和 7.0 成功测试 运行。它们工作正常,直到我切换到对我的一个组件使用 Composer,这导致我的目录结构进行了一些调整。但鉴于它在某些 PHP 版本中工作得很好,而不是其他版本,我认为我没有一个简单的 "typo" 本身。这是 PHP 7.1 的潜在问题吗?我查看了 PHP 7.0 和 7.1 之间的更改日志,看看是否有关于名称空间或自动加载的突出内容,但我没有看到任何内容。

我正在使用 Travis CI 构建我的项目和 运行 我的测试。我尝试调试的结果可以在这里找到:https://travis-ci.org/dbudwin/RoboHome-Web/jobs/173488168

它们都会导致无法找到 类 的相同错误,例如:

1) Tests\Models\DevicesModelTest::testAdd
Error: Class 'Models\DevicesModel' not found

这是我需要工作的拉取请求的直接 link:https://github.com/dbudwin/RoboHome-Web/pull/45

在分支 F3Composercomposer.json 中,您缺少更新 autoload 部分的 psr-4。您重构 class 的路径但不更新自动加载。所以改变你的自动加载如下:

composer.json

"autoload": {
    "psr-4": {
        "Models\":"app/models",
        "Controllers\":"app/controllers"
    }
},

重新运行 composer install(重新生成自动加载器文件),测试套件将变为绿色。

希望对您有所帮助