Laravel phpUnit

Posted

技术标签:

【中文标题】Laravel phpUnit【英文标题】: 【发布时间】:2018-10-16 07:03:37 【问题描述】:

当我跑步时 phpunit 命令它从 Sebastian Bergmann 的 PHPUnit 3.7.21 的 phpunit 帮助中抛出所有信息。所以我建议它应该可以工作,但还不行;

当我跑步时

phpunit ExampleTest.php
PHP Fatal error:  Class 'Tests\TestCase' not found in C:\xampp7\htdocs\projects\heroes\tests\Feature\ExampleTest.php on line 8

在 Laravel 中,我有 'tests' 文件夹

TestCase.php
<?php

namespace Tests;

use Illuminate\Foundation\Testing\TestCase as BaseTestCase;

abstract class TestCase extends BaseTestCase

    use CreatesApplication;

文件夹'功能'与

ExampleTest.php

<?php

namespace Tests\Feature;

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

class ExampleTest extends TestCase

    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    
        $response = $this->get('/');

        $response->assertStatus(200);
    

和文件夹“单元”

在 Laravel 根文件夹中我有

composer.json




  
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": 
        "php": "^7.1.3",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "5.6.*",
        "laravel/tinker": "^1.0",
        "laravelcollective/html": "^5.4.0",
        "laravelcollective/html": "~5.0"
    ,
    "require-dev": 
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^2.0",
        "phpunit/phpunit": "^7.0"
    ,
    "autoload": 
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": 
            "App\\": "app/"
        
    ,
    "autoload-dev": 
        "classmap": [
            "tests/TestCase.php"
        ],
        "psr-4": 
            "Tests\\": "tests/"
        
    ,
    "extra": 
        "laravel": 
            "dont-discover": [
            ]
        
    ,
    "scripts": 
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate"
        ],
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover"
        ]
    ,
    "config": 
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    ,
    "minimum-stability": "dev",
    "prefer-stable": true

我只需要开始单元测试

【问题讨论】:

如果你不带参数运行phpunit 正如我在开头所写的,它抛出了 Sebastian Bergmann 和贡献者的大量信息 phpunit PHPUnit 7.1.5。用法:phpunit [options] UnitTest [UnitTest.php] phpunit [options] 代码覆盖选项:.... 请显示您的composer.json的全部内容。 我在运行 phpunit 时将其添加得更高。它说 PHP Fatal error: Class 'Tests\TestCase' not found in ExampleTest.php on line 8 【参考方案1】:

你可以用这个

./vendor/bin/phpunit

这样它会从你的应用程序的根目录运行 phpunit

【讨论】:

【参考方案2】:

看起来您使用的 phpunit 已全局安装在您的系统中,它非常旧,并且与您的项目自动加载无关。您应该使用 Composer 在您的项目中安装的 phpunit:

vendor/bin/phpunit

【讨论】:

你说我在做一些旧的东西,请解释我应该做些什么改变才能成为最新的 @DimaRashevskiy 这取决于你如何安装这个全球版本的 phpunit。但是你真的应该避免使用全局版本的 phpunit 并且总是使用本地安装在项目中的那个。不同的项目可能需要不同版本的phpunit,所以使用全局安装会使测试结果无法预测,因为在不同的计算机上可能安装了不同的版本。 phpunit 的本地安装在每个环境中总是相同的,因为它被锁定在composer.lock 谢谢。也用于测试 - 我只使用 crud 进行基本的 crud 项目。我不应该涵盖杂乱无章的内容,但我应该涵盖“主要逻辑”。碰巧我所有的方法都使用连接到 crud 的 DB,因此问题是:什么是简单的主要逻辑单元测试?我有一个检查连接。另一个测试来自 ('/') 的示例 chekcs 服务器响应得到 200,并且在 ('/mypage') 上不起作用,它给出了 500。这里可能存在什么问题以及其他简单的单元测试可能是什么?? 【参考方案3】:

当我跑步时

vendor\bin\phpunit

它有效,但是如果有人解释为什么会很好

【讨论】:

以上是关于Laravel phpUnit的主要内容,如果未能解决你的问题,请参考以下文章

使用 laravel 安装程序创建 laravel 项目

Laravel:laravel 可翻译插件

win 怎么laravel命令

laravel 安装失败

laravel validator怎么验证整数

Laravel 图像规则验证不适用于 Laravel 8,但适用于 Laravel 7 |拉拉维尔 |图片 |验证