PHPUnit:使用@runTestsInSeparateProcesses 时找不到嘲弄

Posted

技术标签:

【中文标题】PHPUnit:使用@runTestsInSeparateProcesses 时找不到嘲弄【英文标题】:PHPUnit: Mockery not found when using @runTestsInSeparateProcesses 【发布时间】:2016-01-16 05:35:35 【问题描述】:

我将 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 运行测试,没有任何参数。

我该如何解决这个问题?

【问题讨论】:

您的确切命令行是什么?你的 phpunit.xml 中有什么? PHPUnit 安装在哪里?如果有的话,引导脚本中有什么? 嘿@Sven,查看编辑。 【参考方案1】:

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

【讨论】:

以上是关于PHPUnit:使用@runTestsInSeparateProcesses 时找不到嘲弄的主要内容,如果未能解决你的问题,请参考以下文章

markdown [代码覆盖率Phpunit]安装Xdebug并使用Phpunit运行代码覆盖率#xdebug #phpunit #code #coverage

phpunit 入门

PHPUnit - 使用配置文件时“未执行测试”

如何使用从作曲家安装的 phpunit?

PHPUnit简介及使用

使用 PhpStorm 在 Homestead 环境中调试 PHPUnit 测试