Laravel 4.2:测试用例自动加载

时间:2014-09-02 17:34:28

标签: php laravel phpunit

现在,当我为Laravel应用程序设置一个新测试时,它从基础TestCase类扩展

class SomeTest extends TestCase
{
}

我想创建一个名为AnotherTestCase的新基础测试类,因此我可以创建共享setup / teardown / helper方法等的测试用例...

class SomeTest extends AnotherTestCase
{
}

然而,当我跑

phpunit app/tests/SomeTest.php

我收到以下错误

PHP Fatal error:  Class 'AnotherTestCase' not found in /[...]/app/tests/SomeTest.php on line 3

尽管我在

定义了一个类,但这是事实
#File: app/tests/AnotherTestCase.php
<?php
class AnotherTestCase extends TestCase
{
}

这很令人困惑,因为phpunit似乎会自动加载TestCase类。

我是否需要在自定义基础测试类中手动要求,或者有没有办法告诉phpunit我的新基础测试类?换句话说,为什么phpunit会自动加载TestCase,但不会自动加载AnotherTestCase

1 个答案:

答案 0 :(得分:7)

您可以将此错误添加到composer.json

,以解决此错误
"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/filters",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php",
        "app/tests/AnotherTestCase.php"  // <-- Add Me
    ],
// ...

然后确保你做composer dump-autoload。我刚刚通过添加以下类来测试它:

class AnotherTestCase extends TestCase {}

并改变了我现有的一个测试,将其作为父级使用。我相信composer.json中的条目是您加载TestCase的方式。