找不到TestCase的laravel致命错误

Ste*_*als 20 php laravel

http://localhost/laravel/app/tests/ExampleTest.php
Run Code Online (Sandbox Code Playgroud)

如果我运行laravel它会显示以下错误

致命错误:在第3行的D:\ xampp\htdocs\laravel\app\tests\ExampleTest.php中找不到类'TestCase',任何想法

Far*_*mov 17

在项目的根目录中运行以下命令

phpunit app/tests/
Run Code Online (Sandbox Code Playgroud)

更新:

如果您的计算机上未安装phpunit,也可以使用以下命令运行.哪个也更好,以避免队友之间的版本差异.

vendor/bin/phpunit
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Wal*_*ers 6

在我的情况下,我注意到我的根文件夹不包含phpunit.xml文件.

解决它,包括根文件夹中phpunit.xml中的以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="bootstrap/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false"
>
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory>./app/tests/</directory>
        </testsuite>
    </testsuites>
</phpunit>
Run Code Online (Sandbox Code Playgroud)


ale*_*ell 5

你还没有真正提供太多信息,但具体问题可能是你没有自动加载器(因此TestCasePHP所期望的类实际上没有加载.反过来的根本问题可能是你我试图ExampleTest.php直接在终端上运行,而你必须通过Laravel和PHPUnit正确地引导测试环境.

您应该在Laravel安装的根目录中找到phpunit.xml文件.这个文件告诉PHPUnit如何引导程序并开始为你的应用程序执行测试,所以你应该能够phpunit在你的应用程序的根目录中的命令行上运行它应该工作.

如果这不是问题,请为人们提供更多详细信息.


Álv*_*ães 5

检查tests目录是否在文件的classmap属性中列出composer.json

如果没有添加,请运行composer dump-autoload

"autoload-dev": {
    "classmap": [
        "tests",
        "database/"
    ]
},
Run Code Online (Sandbox Code Playgroud)

  • 这省了我很多头疼!我将测试添加到类映射中,然后运行了作曲家转储。解决了我的问题。谢谢! (2认同)

小智 5

PHPUnit 有同样的问题,他总是输出相同的消息:PHP Fatal error: Class 'Tests\TestCase' not found ...事实上,我认为他很难找到那个类,所以你需要做的是转换一行:

由此 :

<?php

namespace Tests\Feature;

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

class AnotherTest extends TestCase {
    public function testExample() {
        // Do something
    }
}
Run Code Online (Sandbox Code Playgroud)

对此:

<?php

namespace Tests\Feature;

use PHPUnit\Framework\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;

class AnotherTest extends TestCase {
    public function testExample() {
        // Do something
    }
}
Run Code Online (Sandbox Code Playgroud)

注意正在使用的第一行,如果在同一个案例中有任何其他文件,你应该这样做

  • 这里的问题是您包含了 PHPUnit TestCase,而不是 Laravel 测试用例,因此您将错过 Laravel 的特定功能 (2认同)