我已经开发了一些捆绑软件,例如https://github.com/975L/EmailBundle,我想为其添加测试。因此,我创建了包含一个测试的文件Tests/Service/EmailServiceTest.php
。
我已经在Ubuntu计算机上使用sudo apt install phpunit
安装了phpunit,但是当我cd
到包的文件夹中并运行phpunit
时,出现以下错误:
1) c975L \ EmailBundle \ Tests \ Service \ EmailServiceTest :: testCreateEmailObject 错误:找不到类'c975L \ EmailBundle \ Service \ EmailService'
即使在顶部用use
声明,自动加载程序也找不到该类。
我在网络上看到了一些解决方案,这些解决方案要求创建具有自动加载功能的bootstrap.php
,但是即使这样,它也无法正常工作...
所以我的问题是我们如何使用phpunit测试独立的Symfony捆绑包?
答案 0 :(得分:3)
在每个项目的基础上安装phpunit是一个好主意,因为如果您有多个项目,则版本差异可能会出现。
(1)composer require phpunit/phpunit --dev
我在网络上看到了一些解决方案,这些解决方案要求创建具有自动加载功能的bootstrap.php,但是即使这样做,它也无法正常工作...
您可以使用作曲家的自动加载器作为引导程序。自定义引导程序在某些情况下可能会派上用场,但不是必需的。
(2)创建一个phpunit.xml.dist
文件,如下所示(您当前的文件未指定引导程序):
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="./vendor/autoload.php">
<testsuites>
<testsuite name="MyBundle test suite">
<directory suffix="Test.php">./Tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>./</directory>
<exclude>
<directory>./Resources</directory>
<directory>./Tests</directory>
<directory>./vendor</directory>
</exclude>
</whitelist>
</filter>
</phpunit>
还可以查看vendor/bin/phpunit --generate-configuration
,这很好。
(3)运行vendor/bin/phpunit
它应该会自动找到配置文件,但是您也可以使用--configuration
选项进行指定