测试Laravel软件包


Testing a Laravel package

所以,我正在编写一个基本的Laravel包,我似乎偶然发现了另一个问题,这次是测试。

正在开发的包当前位于项目根目录中的packages文件夹中。我已经修改了包的composer.json文件,以包含我需要的依赖项

"require-dev": {
    "phpunit/phpunit": "~4.0",
    "laravel/laravel": "dev-develop"
}

然而,每当我尝试在包文件夹中运行phpunit tests(其中包含一个名为tests的文件夹和一个示例测试)时,我都会收到以下错误:

PHP致命错误:在第8行上的/workspace/laraavel/packages/sample/http-request/tests/HttpRequestTest.PHP中找不到类"Illuminate''Foundation''Testing''TestCase"

测试文件只是自动生成的存根:

<?php
use Illuminate'Foundation'Testing'WithoutMiddleware;
use Illuminate'Foundation'Testing'DatabaseMigrations;
use Illuminate'Foundation'Testing'DatabaseTransactions;
class HttpRequestTest extends Illuminate'Foundation'Testing'TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testExample()
    {
        $this->assertTrue(true);
    }
}

知道为什么不起作用吗?应用程序测试运行顺利,但除了盒子里的内容外,应用程序本身没有其他依赖项。

解决方案

通过扩展PHPUnit_Framework_TestCase:使其独立工作

class HttpRequestTest extends PHPUnit_Framework_TestCase 

然而,运行它就像:

vendor/bin/phpunit packages/yourname/package-name/

同样有效,所以我选择了它作为答案。

这对我有效:

class HttpRequestTest extends TestCase

并使用运行测试

vendor/bin/phpunit packages/yourname/package-name/

(代表OP作为答复发布)

通过扩展PHPUnit_Framework_TestCase:使其独立工作

class HttpRequestTest extends PHPUnit_Framework_TestCase 

然而,运行它就像:

vendor/bin/phpunit packages/yourname/package-name/

同样有效,所以我选择了它作为答案。

对于Windows环境,您需要使用反斜杠!

vendor'bin'phpunit packages'yourname'package-name

  • 在包的根目录中创建一个名为tests的目录,并在其中编写各种测试类。您可以在一个类中的各种方法中拥有包的所有功能,也可以使用多个类。

  • 移动到项目的根目录并运行以下命令,

    vendor/bin/phpunit packages/YOUR_DIRECTORY_NAME/PACKAGE_NAME

  • 稍等片刻,您就会得到测试用例的响应。将显示阳性和阴性检测的数量。