如何从 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 获取路由