目前,我已经开始学习Laravel 5.6中的单元测试。 默认情况下,我的laravel项目有一个“ tests”目录,其中还有2个目录,分别是“ Features”和“ Unit”。每个目录都包含一个“ ExampleTest.php”
./tests/Features/ExampleTest.php
./tests/Unit/ExampleTest.php
每当我使用命令创建新的测试文件
php artisan make:test BasicTest
默认情况下,它总是在“功能”目录中创建测试文件,因为我希望在“测试”目录下创建文件。
有没有一条命令可以用来指定创建测试文件的路径。 像这样
php artisan make:test BasicTest --path="tests"
我已经尝试了上面的path命令,但这不是有效的命令。
我需要在phpunit.xml文件中更改一些代码吗?
答案 0 :(得分:4)
php artisan make:test Web/StatementPolicies/StatementPolicyListTest
默认情况下,它将在statement / Feature / Web下创建一个文件,即StatementPolicies下的StatementPolicyListTest(如果不存在,它将创建一个具有该名称的新文件夹)文件夹
答案 1 :(得分:1)
使用此命令
php artisan make:test BasicTest --unit
还可以使用
php artisan make:test --help
查看可用选项
您必须创建自定义artiasn命令
<?php
namespace App\Console;
class TestMakeCommand extends \Illuminate\Foundation\Console\TestMakeCommand
{
/**
* The console command name.
*
* @var string
*/
protected $signature = 'make:test-custom {name : The name of the class} {--unit : Create a unit test} {--path= : Create a test in path}';
/**
* Get the default namespace for the class.
*
* @param string $rootNamespace
* @return string
*/
protected function getDefaultNamespace($rootNamespace)
{
$path = $this->option('path');
if (!is_null($path)) {
if ($path) {
return $rootNamespace. '\\' . $path;
}
return $rootNamespace;
}
if ($this->option('unit')) {
return $rootNamespace.'\Unit';
}
return $rootNamespace.'\Feature';
}
}
在内核中注册
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
TestMakeCommand::class
];
......
}
然后您可以使用
php artisan make:test-custom BasicTest --path=
或
php artisan make:test-custom BasicTest --path=Example