运行单个测试时找不到PHPUNIT_Framework_TestCase

tam*_*am5 0 php phpunit laravel

我正在尝试使用Laravel 5.2.10进行 PHPUnit测试.我在我的项目中本地安装了PHPUnit 5.1.4.

当我跑:

phpunit
Run Code Online (Sandbox Code Playgroud)

PHPUnit test完美地运行我的目录中的所有测试.

但是,当我跑:

phpunit tests/unit/testThatFails.php
Run Code Online (Sandbox Code Playgroud)

我明白了:

PHP Fatal error:  Class 'PHPUNIT_Framework_TestCase' not found in ...
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我运行phpunit时,它成功运行了测试目录中的每个测试,包括这testThatFails.php很好.

当我尝试运行一次测试时为什么会中断?

更新:
这是我的phpunit.xml:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="bootstrap/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false">
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory>./tests/</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist>
            <directory suffix=".php">app/</directory>
        </whitelist>
    </filter>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_DRIVER" value="sync"/>
    </php>
</phpunit>
Run Code Online (Sandbox Code Playgroud)

更新:
目前,由于我使用的是Laravel,我通过扩展来避开这个问题TestCase而不是PHPUNIT_Framework_TestCase,并且我的测试能够按预期运行.但是,这只是一种规避而不是解决方案.(对我而言,这也很奇怪,因为它TestCase本身最终会延伸出来PHPUNIT_Framework_TestCase.

Fab*_*ler 9

消息说PHPUNIT_Framework_TestCase,但实际上是在调用类PHPUnit_Framework_TestCase.现在这是棘手的事情

  • PHP中的类名称不区分大小写,这就是为什么它在运行整个测试套件并且类已经加载时有效.
  • 自动装带器区分大小写,因为您的文件系统区分大小写,无法猜出正确的大小写.

因此,当您单独运行测试时,在PHPUNIT_Framework_TestCase包含测试用例文件之前未加载类,并且自动加载器将查找文件PHPUNIT/Framework/TestCase.php而不是PHPUnit/Framework/TestCase.php.此文件不存在,您收到"找不到类"错误.

更换

class TestThatFails extends PHPUNIT_Framework_TestCase
Run Code Online (Sandbox Code Playgroud)

class TestThatFails extends PHPUnit_Framework_TestCase
Run Code Online (Sandbox Code Playgroud)