如何在 Laravel 项目中为我自己的包运行 php 测试?
Posted
技术标签:
【中文标题】如何在 Laravel 项目中为我自己的包运行 php 测试?【英文标题】:How to run php tests in Laravel project for my own package? 【发布时间】:2019-08-07 14:13:18 【问题描述】:我有自己的 Laravel 包,我希望能够为它编写和创建测试。
我的项目安装在我的项目ROOT/CompayName/package-name
中的以下目录中。我的测试位于ROOT/CompanyName/package-name/tests
,而代码位于ROOT/CompanyName/package-name/src
。
在composer.json
文件中,我像这样自动加载我的测试
"autoload-dev":
"psr-4":
"Tests\\": "tests/",
"CompayName\\ProjectName\\": "CompayName/package-name/tests/"
,
另外,我在phpunit.xml
文件中添加了以下内容
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
<directory suffix="Test.php">./CompanyName/project-name/tests/</directory>
</testsuite>
然后我创建以下测试
<?php
namespace CompanyName\ProjectName;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class SomeKindOfTest extends TestCase
/**
* A basic test example.
*
* @return void
*/
public function ableToDoSomething()
dd('ableToDoSomething was called!!!!!!!!!!!');
但是,当我从命令行运行 phpunit
时,我的测试没有被触发!
如何正确触发我的包中的测试。
【问题讨论】:
【参考方案1】:PHPUnit 通常运行名为test*
的方法,除非您在 phpunit.xml 中另有指定。
尝试重命名您的测试:
public function testAbleToDoSomething()
PHPUnit 还支持 docblock 内的特殊 /** @test */
注释:
/** @test */
public function ableToDoSomething()
【讨论】:
感谢您提供的信息。我尝试将方法重命名为以关键字test
开头,我还尝试用 /** @test */
装饰它,但现在仍然有效。以上是关于如何在 Laravel 项目中为我自己的包运行 php 测试?的主要内容,如果未能解决你的问题,请参考以下文章
如何在线运行 Laravel 调度命令作为 Cron Job
为啥“npm install”在我的“package-lock.json”文件中为我的包添加“node_modules”前缀?