如何防止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
中对其进行重命名。我想到了这一点,但问题是我将不得不失去可读性。我首先要确定的是,实际上没有办法,不是我不知道。