如何在 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”前缀?

为我的 Laravel 项目添加路径以用于博客

在 iOS 中为我​​自己的框架添加“THIS 已重命名为 THAT”

如何在 laravel 中为资源控制器添加自定义函数?

如何在我的 podfile 中为我的 Xcode 项目指定多个目标?