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的主要内容,如果未能解决你的问题,请参考以下文章