如何从 Laravel Artisan 触发单元测试

Posted

技术标签:

【中文标题】如何从 Laravel Artisan 触发单元测试【英文标题】:How to trigger unit testing from Laravel Artisan 【发布时间】:2018-07-21 22:28:12 【问题描述】:

我有一种情况,我使用 phpUnit 进行了一些单元测试,我想从 laravel 的工匠控制台实用程序触发它们。我google了一下,没有找到参考,可以吗?我不是在问如何测试工匠命令。或者如何动态调用另一个 artisan 命令,但要从 artisan 触发单元测试

我可以使用 Artisan 外观调用某些命令,例如

Artisan::call('migrate'); //which calls migration

像这样我可以调用单元测试吗?我正在使用 PHPUnit

【问题讨论】:

Laravel 5 dynamically run migrations的可能重复 不,不重复 【参考方案1】:

你可以使用 symfony 的 process 命令,它无论如何都会驱动 Laravel 的 artisan 命令:

use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;

$process = new Process('phpunit');
$process->run();

// executes after the command finishes
if (!$process->isSuccessful()) 
    throw new ProcessFailedException($process);


echo $process->getOutput();

【讨论】:

【参考方案2】:

您可以使用shell_exec()exec()

shell_exec('/path/to/phpunit/ /path/to/tests')

【讨论】:

但是我如何从 Artisan 调用 exec?这是真正的问题 @ShobiPP 这可以在任何地方工作,你为什么不想在 Artisan 命令中使用它?

以上是关于如何从 Laravel Artisan 触发单元测试的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 - 如何从 Artisan 命令运行控制器方法?

如何将 Artisan cli 添加到现有的 laravel 项目?

Laravel 5.6 artisan 命令从 URI 获取路由

用于清除 Laravel 中所有会话数据的 Artisan 命令

无法执行Laravel工匠命令

如何在代码 Laravel 中使用 Artisan 命令?