为什么全局phpunit忽略xml配置文件



我已经启动并运行了一个小型web应用程序,其中包括php单元测试。它是用composer构建的,并且有一个非常标准的目录结构:

src/
    application files
tests/
    bootstrap.php
    test files
web/
    index.php
.travis.yml
composer.json
composer.lock
phpunit.xml

phpunit.xml内容:

<?xml version="1.0" encoding="UTF-8" ?>
<phpunit boostrap="./tests/bootstrap.php">
    <testsuites>
        <testsuite name="Chronos">
            <directory>./tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

bootstrap.php内容:

<?php
require __DIR__ . "/../vendor/autoload.php";

我的问题

运行以下命令效果良好,我的测试通过:

$ vendor/bin/phpunit
PHPUnit 4.8.26 by Sebastian Bergmann and contributors.
..
Time: 104 ms, Memory: 4.00MB
OK (2 tests, 2 assertions)

然而,当我运行我的phpunit的全局安装版本时,它失败了:

$ phpunit
PHPUnit 4.8.26 by Sebastian Bergmann and contributors.
EE
Time: 117 ms, Memory: 4.00MB
There were 2 errors:
1) WelcomeTest::testReturnsAPayload
Error: Class 'EquipPayload' not found
/Users/tony/Documents/projects/chronos/tests/Domain/WelcomeTest.php:13
2) WelcomeTest::testReturnsOkStatus
Error: Class 'EquipPayload' not found
/Users/tony/Documents/projects/chronos/tests/Domain/WelcomeTest.php:13
FAILURES!
Tests: 2, Assertions: 0, Errors: 2.

在我的项目根目录中运行phpunit的全局安装似乎不包括/解析我的phpunit.xml文件(它指定了自动加载器)。我在TravisCI上得到了同样的结果。

有人知道为什么会发生这种事吗?我可以在.travis.yml文件中指定phpunit的本地版本,但我更想知道是什么导致了这里的差异。

啊,我想明白了。我的phpunit.xml文件中有一个愚蠢的打字错误(在"boostrap"中缺少t)。事实证明,phpunit的composer版本自动包含了自动加载,因此运行良好,而全局phpunit包含phpunit.xml,因此找不到引导脚本。

相关内容

  • 没有找到相关文章

最新更新