查看laravel testing documentation,您可以了解我喜欢在工作台中使用的所有酷助手。
可悲的是我无法这样做。
从包目录运行我的测试时, Illuminate\Foundation\Testing\TestCase
似乎不可用,因此我无法扩展它。
<?php namespace Acme\Foo;
class TestCase extends \Illuminate\Foundation\Testing\TestCase {
/**
* Creates the application.
*
* @return \Symfony\Component\HttpKernel\HttpKernelInterface
*/
public function createApplication()
{
$unitTesting = true;
$testEnvironment = 'testing';
return require __DIR__.'/../../../../bootstrap/start.php';
}
}
PHP Fatal error: Class 'Illuminate\Foundation\Testing\TestCase' not found in
/Applications/MAMP/htdocs/Webseiten/acme/workbench/acme/foo/tests/TestCase.php on line 3
我认为这不是正确的方法,无论如何应该这样做......
我已经找到orchestral/testbench,但我不确定使用它是否是个好主意。它似乎需要整个laravel框架,这对我没有意义? (包应该扩展laravel安装而不是第二次添加框架!?)
答案 0 :(得分:2)
我就是这样做的,
首先,更改工作台目录中的phpunit.xml
内容。您将“引导”属性部分,将其从vendor/autoload.php
更改为../../../bootstrap/autoload.php
然后尝试在工作台目录上运行phpunit
。
答案 1 :(得分:1)
删除
命名空间Acme \ Foo;
应该修复它。然后你可以从包dir运行测试。还要确保在主应用程序目录中的包dir或 php artisan dump-autoload 中运行 composer dump-autoload 。
更新我能够在干净的Laravel 4.1安装中复制错误,并按照以下步骤修复它,而无需安装额外的软件包:
1 - 在主laravel根 composer.json (而不是workbench包composer.json文件)中安装PHPUnit
"require-dev": {
"phpunit/phpunit": "3.7.*"
},
2 - 在主laravel根目录中运行 composer update 。
3 - 在测试类中使用完全限定名称(名称空间前缀为)
<?php
class SomeTest extends \Illuminate\Foundation\Testing\TestCase {
public function createApplication()
{
$unitTesting = true;
$testEnvironment = 'testing';
return require __DIR__.'/../../../../bootstrap/start.php';
}
public function testSomething()
{
$this->assertTrue(true);
}
}
4 - 要运行工作台包测试,请转到包目录并运行main phpunit
# in workbench/package/vendor dir run
../../../vendor/bin/phpunit
5 - 输出绿色标记识别laravel app第三方软件包
marcanuy@bolso-server:~/public_html/pkgtesting/workbench/my/pack$ ../../../vendor/bin/phpunit --debug
PHPUnit 3.7.31 by Sebastian Bergmann.
Configuration read from /home/marcanuy/public_html/pkgtesting/workbench/my/pack/phpunit.xml
Starting test 'SomeTest::testSomething'.
.
Time: 64 ms, Memory: 6.25Mb
OK (1 test, 1 assertion)
答案 2 :(得分:0)
对我来说,由于workbench的设置方式,测试用例只能从PHPUnit_Framework_TestCase扩展。所以我从app文件夹而不是包文件夹运行测试用例。
我选择第二个选项,因为testbench在很大程度上取决于特定的Laravel版本,并且设置起来似乎有点沉重。我所做的是配置主应用程序下的phpunit.xml,将package tests文件夹包含为测试套件:
<testsuite name="MyPack">
<directory>./workbench/winponta/mypack/tests/</directory>
</testsuite>
然后运行:
$ phpunit --testsuite=MyPack
使用此方法,我们仍然可以从\ Illuminate \ Foundation \ Testing \ TestCase扩展。
我在http://ngo-hung.com/blog/2014/04/16/laravel-unit-testing-in-workbench-note
找到了这个解决方案