Laravels在工作台中整洁的测试助手?

Laravels在工作台中整洁的测试助手?,laravel,laravel-4,phpunit,workbench,Laravel,Laravel 4,Phpunit,Workbench,通过查看,您可以了解我希望在workbench中使用的所有酷助手 遗憾的是,我不能这样做 从包目录运行测试时,illumb\Foundation\Testing\TestCase似乎不可用,因此无法扩展它 <?php namespace Acme\Foo; class TestCase extends \Illuminate\Foundation\Testing\TestCase { /** * Creates the application. *

通过查看,您可以了解我希望在workbench中使用的所有酷助手

遗憾的是,我不能这样做

从包目录运行测试时,
illumb\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
删除

名称空间Acme\Foo

你应该把它修好。然后可以从包目录运行测试。另外,请确保在程序包目录中运行composer dump autoload或从主应用程序目录运行php artisan dump autoload

更新我能够在干净的Laravel 4.1安装中复制错误,并按照以下步骤修复错误,而无需安装额外的软件包:

1在主laravel root composer.json中安装PHPUnit(而不是工作台包composer.json文件)

2在主laravel根目录中运行composer更新

3-在测试类中使用完全限定名(名称空间前缀为)

5-输出识别laravel应用程序第三方软件包的绿色标志

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)

对我来说,由于workbench的设置方式,测试用例只能从PHPUnit_Framework_TestCase扩展。因此,我从app文件夹而不是package文件夹运行测试用例

我选择第二个选项,因为测试台很大程度上取决于特定的Laravel版本,而且设置起来似乎有点繁重。我所做的是在主应用程序下配置phpunit.xml,将package tests文件夹作为测试套件:

<testsuite name="MyPack">
    <directory>./workbench/winponta/mypack/tests/</directory>
</testsuite>
使用此方法,我们仍然可以从\illumb\Foundation\Testing\TestCase进行扩展

我在

找到了这个解决方案我就是这么做的

首先,更改工作台目录中的
phpunit.xml
内容。您将在“bootstrap”属性部分,将其从
vendor/autoload.php
更改为
。/../../bootstrap/autoload.php


然后尝试在工作台目录上运行
phpunit

它添加了整个框架,因为如果您将包推送到github并在travis-ci上运行它,那么这将丢失。因此,将
“laravel/framework”:“4.1.*”
添加到packages composer中。json
“require dev”
将是一个好的做法?添加它是为了确保在需要2.0时加载laravel 4.0,当您加载2.1时,它将加载Laravel4.1,以此类推。这有什么不同吗?可能只适用于那些只在workbench上使用它的人,但在一个应用程序中加载两个composer供应商仍然是个坏主意。在这个阶段,我并没有真正关注于支持workbench,这会导致诸如和OK之类的问题,我明白了。因此,如果我只是
“require dev”
“laravel/framework”:“4.1.*”
它可能不会工作
testbench
解决了这些问题,但目前在4.1上表现出bug。。。有什么好的选择吗?使用travis ci测试开发laravel软件包的最佳方法是什么?不要使用workbench,而是完全不同地使用它?我的建议是使用workbench只是理解软件包开发的早期阶段。一旦你熟悉了它,就把它搬出去,作为一个独立的包继续工作,原因很多。你以前做过吗?对我来说,这不会改变任何事情:-/(+这是一个干净的laravel安装)是的,最近我一直在努力解决类似的问题,试图在不引入新软件包的情况下测试一个软件包,我在这里工作得很好:然后我从package dir运行我的测试,比如../../../vendor/bin/phpunitIt,这很奇怪,因为如果我像您在测试中那样添加名称空间,我会收到与您收到的错误相同的错误,在删除它后工作得很好,您是否运行了转储自动加载?是的,我确实从我的应用程序的根目录运行了
php artisan dump autoload
。它甚至提到它考虑了我的工作台。我会看看你的存储库。也许这会有帮助。无论如何,如果我不想使用travis ci,这将不起作用,对吗?不确定,因为我还没有将travis ci与Laravel软件包一起使用,但可能可以设置自定义脚本。是的,这是一个很好的解决方案。唯一的问题是,一旦你想让某种CI运行起来。(例如,特拉维斯,对我来说就是这样)谢谢你的回答:-)好吧,我仍然没有在这个拉维尔项目中使用CI,所以不必考虑它。欢迎您。或者,您可以在命令行上传递bootstrap选项(如果您不想更改配置文件):
phpunit--bootstrap=../../../../bootstrap/autoload.php
这很好,这两个答案对我帮助很大,非常感谢!
# in workbench/package/vendor dir run
../../../vendor/bin/phpunit
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)
<testsuite name="MyPack">
    <directory>./workbench/winponta/mypack/tests/</directory>
</testsuite>
$ phpunit --testsuite=MyPack