错误:Class';路线';在使用Orchestra Testbench测试独立的Laravel包时,routes.php中找不到

错误:Class';路线';在使用Orchestra Testbench测试独立的Laravel包时,routes.php中找不到,php,laravel,laravel-5,Php,Laravel,Laravel 5,我现在有点奇怪 我目前正在构建一个Laravel包,它位于Github上。我正在使用来单独测试这个包以及它的BrowserKit扩展 当我在本地运行测试套件时,它工作得很好。但是,在Travis CI中,它抛出以下错误: Error: Class 'Route' not found in /home/travis/build/matthewbdaly/laravel-error-snapshot/src/routes.php on line 3 因此,我尝试在routes.php中显式导入路

我现在有点奇怪

我目前正在构建一个Laravel包,它位于Github上。我正在使用来单独测试这个包以及它的BrowserKit扩展

当我在本地运行测试套件时,它工作得很好。但是,在Travis CI中,它抛出以下错误:

Error: Class 'Route' not found in /home/travis/build/matthewbdaly/laravel-error-snapshot/src/routes.php on line 3

因此,我尝试在
routes.php
中显式导入路由外观。同样,它只在本地工作,但返回了不同的错误消息:

PHP Fatal error:  Uncaught RuntimeException: A facade root has not been set. in /home/travis/build/matthewbdaly/laravel-error-snapshot/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:218

我真的不知道为什么它在一个环境中工作,而不是在另一个环境中工作。有人能解释一下吗?就我所知,这看起来不像是特拉维斯CI的暂时问题,但我不确定还有什么其他问题

编辑:这很有趣

如果我安装Xdebug并在启用覆盖率的情况下运行测试,我可以在本地重现错误:

PHP Fatal error:  Uncaught Error: Class 'Route' not found in /home/matthew/Projects/laravel-error-snapshot/src/routes.php:3
Stack trace:
#0 /home/matthew/Projects/laravel-error-snapshot/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(1097): include_once()
#1 /home/matthew/Projects/laravel-error-snapshot/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(269): SebastianBergmann\CodeCoverage\CodeCoverage->initializeData()
#2 /home/matthew/Projects/laravel-error-snapshot/vendor/phpunit/phpunit/src/Framework/TestResult.php(659): SebastianBergmann\CodeCoverage\CodeCoverage->start(Object(Tests\Feature\SnapshotTest))
#3 /home/matthew/Projects/laravel-error-snapshot/vendor/phpunit/phpunit/src/Framework/TestCase.php(894): PHPUnit\Framework\TestResult->run(Object(Tests\Feature\SnapshotTest))
#4 /home/matthew/Projects/laravel-error-snapshot/vendor/phpunit/phpunit/src/Framework/TestSuite.php(744): PHPUnit\Framework\TestCase->run(Object(PHPUnit\Framework\TestResult))
#5 /home/matthew/Projects/laravel-error-snapshot/vendor/phpunit/ in /home/matthew/Projects/laravel-error-snapshot/src/routes.php on line 3

我认为这与路线立面没有得到解决有关。

事实证明,答案相当直截了当。我只需要从测试覆盖率生成中排除routes文件:

文件
phpunit.xml
中的筛选器部分:

<filter>
    <whitelist processUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">./src</directory>
        <exclude>
            <directory suffix=".php">./src/database</directory>
            <file>./src/routes.php</file>
        </exclude>
    </whitelist>
</filter>

/src
./src/数据库
./src/routes.php

Matthew,你救了我!对于任何想知道该文件在哪里(我在哪里)的人来说,它被称为
phpunit.xml
,显然通常位于文档根目录中。