如何防止PHPUnit在Tests目录中运行PHP文件?

如何防止PHPUnit在Tests目录中运行PHP文件?,phpunit,mockery,Phpunit,Mockery,我有很多测试需要创建一个特定的模拟对象。下面是我所做的: namespace AppBundle\Tests\Services\Terminal; use Mockery\Adapter\Phpunit\MockeryTestCase; use AppBundle\Entity\Tunnel; class TunnelBasedTestCase extends MockeryTestCase { /** * * @var Tunnel */ pr

我有很多测试需要创建一个特定的模拟对象。下面是我所做的:

namespace AppBundle\Tests\Services\Terminal;

use Mockery\Adapter\Phpunit\MockeryTestCase;
use AppBundle\Entity\Tunnel;
class TunnelBasedTestCase extends MockeryTestCase
{

    /**
     *
     * @var Tunnel
     */
    protected $tunnel;

    protected function setup()
    {
        $tunnel = new Tunnel();
        $tunnel->setName('B9')
            ->setIp('192.168.2.52')
            ->setUsername('username')
            ->setPassword('password')
            ->setSign('sign')
            ->setStatus('open');

        $this->tunnel = $tunnel;
    }
}
但是,问题是现在PHPUnit尝试运行此测试,这只是为了防止我复制粘贴
setup()
函数。我不想跳过它,因为我想得到一个完全绿色的测试结果,而不是得到如下结果:

....S.....
或者这个:

....I.....
以下是我的PHPUnit配置,它也无法做到这一点:

<testsuites>
    <testsuite name="Project Test Suite">
        <directory>../src/*/*Bundle/Tests</directory>
        <directory>../src/*/Bundle/*Bundle/Tests</directory>
        <directory>../src/*Bundle/Tests</directory>
        <exclude>../src/AppBundle/Tests/Services/Terminal/TunnelBasedTestCase.php</exclude>
    </testsuite>
</testsuites>

../src/*/*捆绑/测试
../src/*/Bundle/*Bundle/Tests
../src/*捆绑/测试
../src/AppBundle/Tests/Services/Terminal/TunnelBasedTestCase.php

如何执行此操作?

您可以按如下方式编辑phpunit.xml:

<?xml version="1.0" encoding="UTF-8"?>

<phpunit>

    <testsuites>
        <testsuite name="foo">
            <directory>./tests/</directory>
            <exclude>./tests/path/to/excluded/test.php</exclude>
                ^-------------
        </testsuite>
    </testsuites>

</phpunit>
<filter>
    <blacklist>
          <file>../src/AppBundle/Tests/Services/Terminal/TunnelBasedTestCase.php</file>
    </blacklist>
</filter>

/测试/
./tests/path/to/excluded/test.php
^-------------
您也可以尝试制作如下黑名单:

<?xml version="1.0" encoding="UTF-8"?>

<phpunit>

    <testsuites>
        <testsuite name="foo">
            <directory>./tests/</directory>
            <exclude>./tests/path/to/excluded/test.php</exclude>
                ^-------------
        </testsuite>
    </testsuites>

</phpunit>
<filter>
    <blacklist>
          <file>../src/AppBundle/Tests/Services/Terminal/TunnelBasedTestCase.php</file>
    </blacklist>
</filter>

../src/AppBundle/Tests/Services/Terminal/TunnelBasedTestCase.php

非常感谢!但是我做了你需要的改变,什么也没有改变。我已更新我的答案以显示代码,以防我弄错。我已编辑我的答案,请立即尝试。这两种方法都适用于meThis,但其中一种方法也失败了。我已通过将路径复制粘贴到终端中来验证该文件是否存在。我使用的是PHPUnit 4.7.7。该类不是
testcase
类,因此可以使用与正则表达式不匹配的名称重命名它,以检查它是否是
testclass
。因此,您可以在
BaseTunnel
中对其进行重命名。我想到了这一点,但问题是我将不得不失去可读性。我首先要确定的是,实际上没有办法,不是我不知道。