如何从Laravel Artisan触发单元测试。

7 浏览
0 Comments

如何从Laravel Artisan触发单元测试。

我有一个情况,我有一些使用PHPUnit编写的单元测试,并且我希望从laravel的artisan控制台实用程序中触发它们。我已经使用谷歌搜索了一下,但没有找到任何相关的参考资料,这种情况是否可能?我并不是在问如何测试artisan命令,也不是如何动态调用另一个artisan命令,而是如何从artisan中触发单元测试。我可以使用Artisan门面调用某些命令,例如

Artisan :: call('migrate'); //调用迁移

像这样,是否有一种方法可以调用单元测试?我正在使用PHPUnit。

0
0 Comments

问题的出现原因是在Laravel Artisan中如何触发单元测试。虽然可以使用`shell_exec()`或`exec()`来执行命令,但如何在Artisan中调用`exec()`是一个真正的问题。

解决方法是在Artisan命令中使用`exec()`函数来触发单元测试。以下是解决方法的代码示例:


通过创建一个名为`RunUnitTests`的Artisan命令,在`handle()`方法中使用`exec()`函数来触发单元测试。你可以根据实际情况处理输出和返回值。

这样,你就可以通过运行`php artisan test:unit`来从Laravel Artisan触发单元测试了。

0
0 Comments

如何从Laravel Artisan触发单元测试

在使用Laravel进行开发时,我们经常需要运行单元测试来确保代码的质量和正确性。通常情况下,我们可以通过运行phpunit命令来执行单元测试。然而,有时我们可能希望以编程的方式从Laravel Artisan触发单元测试,以便在特定的情况下自动运行测试。

出现的原因:

- 需要以编程的方式从Laravel Artisan触发单元测试。

- 希望在特定的情况下自动运行测试。

解决方法:

我们可以使用Symfony的process命令来驱动Laravel Artisan命令,因为Symfony的process命令实际上是在底层执行Laravel Artisan命令的。

下面是一个示例代码,演示如何使用Symfony的process命令从Laravel Artisan触发单元测试:

use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;
$process = new Process('phpunit');
$process->run();
// 在命令完成后执行
if (!$process->isSuccessful()) {
    throw new ProcessFailedException($process);
}
echo $process->getOutput();

上述代码的功能是创建一个Process对象,该对象执行phpunit命令。然后,通过调用run()方法来运行命令。如果命令执行成功,我们可以通过调用getOutput()方法来获取命令的输出。

如果命令执行失败,我们可以通过抛出ProcessFailedException异常来处理错误。

通过使用上述代码,我们可以在需要的时候以编程的方式从Laravel Artisan触发单元测试,从而实现自动化测试的目的。

0