所以,我正在编写一个基本的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
-
稍等片刻,您就会得到测试用例的响应。将显示阳性和阴性检测的数量。