PHPUnit因进程隔离而失败,但没有该标志就通过

时间:2019-05-01 10:26:29

标签: laravel phpunit

我的测试运行正常,并且在没有任何特殊标志的情况下全部变为绿色:

phpunit --configuration /home/vagrant/code/phpunit.xml /home/vagrant/code/tests

启用进程隔离后,测试将失败:

phpunit --configuration /home/vagrant/code/phpunit.xml /home/vagrant/code/tests --process-isolation

错误看起来像这样:

PHP Fatal error:  Uncaught RuntimeException: A facade root has not been set. in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:234
Stack trace:
#0 /home/vagrant/code/routes/web.php(6): Illuminate\Support\Facades\Facade::__callStatic('get', Array)
#1 Standard input code(1653): require_once('/home/vagrant/c...')
#2 {main}
  thrown in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 234
Fatal error: Uncaught RuntimeException: A facade root has not been set. in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:234
Stack trace:
#0 /home/vagrant/code/routes/web.php(6): Illuminate\Support\Facades\Facade::__callStatic('get', Array)
#1 Standard input code(1653): require_once('/home/vagrant/c...')
#2 {main}
  thrown in /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 234

我已经尝试过在Laracast或StackOverflow上发现的3个或4个线程中的一些关于这种异常的事情,但仍然没有任何效果:

  • 不包括来自PHPUnit.xml的路由
  • 从供应商/ bin或系统中包含的一个运行phpunit

关于在哪里寻找或检查的任何想法?我的想法不多了。

使用最新的Laravel 5.8和PHPUnit 8.0.6

2 个答案:

答案 0 :(得分:0)

我要尝试的第一件事是:单独运行失败的测试,而不是针对整个测试文件夹。

接下来,我将确保失败的测试是否通过setFacadeApplication()或类似方法调用createApplication()。例如,如果setUp()没有调用其父项setUp(),则可能未设置Facade中的静态变量$app。就是这种情况the RuntimeException message says

protected function setUp() // in your test case class
{
    // parent::setUp(); // it's necessary
}

由于它是静态变量,因此一旦设置,它的值将在没有--process-isolation的所有测试用例中保持可用。

答案 1 :(得分:0)

我遇到了同样的错误。我通过创建一个新的应用程序容器并将其绑定到Facade对其进行了修复。

$app->withFacades();

流明:bootstrap / app.php

get-aduser -Filter * -Properties CN,samaccountname,AccountExpirationDate,Enabled,lastLogonTimestamp | Select CN,samaccountname,AccountExpirationDate,Enabled,@{n="lastLogonDate";e={[datetime]::FromFileTime,
($_.lastLogonTimestamp)}} |sort Enabled | export-csv "c:\lemon.csv"