如何修复 PHPUnit 中的“PHP 致命错误:未捕获的 TypeError:getTest() 参数”错误

Posted

技术标签:

【中文标题】如何修复 PHPUnit 中的“PHP 致命错误:未捕获的 TypeError:getTest() 参数”错误【英文标题】:How to fix 'PHP Fatal error: Uncaught TypeError: getTest() parameter' error in PHPUnit 【发布时间】:2019-12-09 03:35:33 【问题描述】:

我正在我的 Laravel 项目中设置 php 单元,但我在第一次运行时收到了致命错误。有人可以帮忙吗?

我在我的 Laravel 项目中运行,使用 Laravel 5.2.45、PHP 7.3.2 和 PHPUnit 7.2.19。这是我第一次尝试做一些测试,但是当我执行测试时总是收到错误。

我希望当我运行 phpunit 时收到资产 true,但我收到以下错误:

PHP 致命错误:未捕获的 TypeError:传递给 PHPUnit\Runner\BaseTestRunner::getTest() 的参数 1 必须是字符串类型,给定对象,在 /usr/share/php/PHPUnit/TextUI/Command.php 中调用在第 180 行并在 /usr/share/php/PHPUnit/Runner/BaseTestRunner.php:59 中定义 堆栈跟踪:

0 /usr/share/php/PHPUnit/TextUI/Command.php(180): PHPUnit\Runner\BaseTestRunner->getTest(Object(PHPUnit\Framework\TestSuite), '', Array)

1 /usr/share/php/PHPUnit/TextUI/Command.php(159): PHPUnit\TextUI\Command->run(Array, true)

2 /usr/bin/phpunit(34): PHPUnit\TextUI\Command::main()

3 主要 在第 59 行的 /usr/share/php/PHPUnit/Runner/BaseTestRunner.php 中抛出


namespace Tests\Unit;

use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;

class ExampleTest extends TestCase

    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    
        $this->assertTrue(true);
    


【问题讨论】:

您找到解决方案了吗? 你好。是的,我昨天找到了。我必须停止这个项目才能在另一个项目中工作。昨天我回来了,问题是我试图在错误的目录中执行。但是现在当我尝试执行具有多个功能的 teste 文件时,我遇到了另一个问题... 【参考方案1】:

见documentation

你必须通过命令创建你的测试

// Create a test in the Unit directory...
php artisan make:test UserTest --unit

如果您已经这样做了,请检查您的 Tests\TestCase,运行 composer dump-autoload 并重试

您也可以使用Codeception 和Laravel5 module 进行测试

【讨论】:

谢谢。问题是我试图在错误的目录中执行 phpunit。感谢您的帮助。

以上是关于如何修复 PHPUnit 中的“PHP 致命错误:未捕获的 TypeError:getTest() 参数”错误的主要内容,如果未能解决你的问题,请参考以下文章

PhpUnit 未显示 php 致命错误的堆栈跟踪

如何修复wordpress中的php致命错误和http错误500

PHP 致命错误:找不到类 - PHPUnit

phpunit 找不到类,PHP 致命错误

PHPUnit CodeIgniter 生成夹具 PHP 致命错误:找不到类“PHPUnit_Framework_TestCase”

如何在使用phpunit进行测试时生成会话变量