PHPUnit:使用@runTestsInSeparateProcesses

时间:2015-10-17 14:47:07

标签: php phpunit composer-php mockery

我正在使用PHPUnit和Mockery,后者我通过composer安装:

"require-dev": {
    "mockery/mockery": "0.9.*"
},

现在,请考虑以下测试用例

<?php

use Mockery as m;

class FooTest extends PHPUnit_Framework_TestCase {
    function testFoo() {
        m::mock('DateTime');
    }
}

phpunit运行正常。现在考虑以下内容:

use Mockery as m;

/**
 * @runTestsInSeparateProcesses
 * @preserveGlobalState disabled
 */
class FooTest extends PHPUnit_Framework_TestCase {
    function testFoo() {
        m::mock('DateTime');
    }
}

在这种情况下,我得到Class 'Mockery' not found例外。

找不到

Mockery - 实际上,找不到/vendor目录中的任何内容,好像作曲家自动加载完全搞砸了。我同时运行了composer updatecomposer dump-autoload

phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false"
>
    <testsuites>
        <testsuite name="Package Test Suite">
            <directory suffix=".php">./tests/</directory>
        </testsuite>

    </testsuites>
</phpunit>

我正在使用PHPUnit 3.7.10并且我使用命令行phpunit运行测试而没有任何参数。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

升级到PHPUnit 4.x为我解决了这个问题。