在Symfony中单独进行PHPUnit测试

5
我希望能够使用PHPUnit单独运行一些单元测试,但是我的某些类与测试分开,因为我在使用Symfony框架,我将测试和类分组放在不同的文件夹中。
我想要像这样单独运行测试:
php phpunit.phar MyTest.php

问题在于测试文件使用控制器类,而PHPUnit似乎无法导入所需的测试类。这并不是同时运行所有测试的问题,因为有phpunit.xml文件,但是当我想要单独运行它们时,就会出现问题。如何解决这个问题?

PHPUnit有一个“filter”选项,您可以使用它。http://phpunit.de/manual/current/en/phpunit-book.html#textui.clioptions 什么是单独运行的意思? - Schleis
我的意思是只运行一个测试,而不是在xml中定义的所有文件中运行所有测试。 - Enrique Moreno OB
3个回答

11
你需要指定phpunit的配置文件位置,例如phpunit.xml(因为它必须知道自动加载程序)。如果你使用默认的Symfony 2结构,那么配置文件应该在app目录下。所以只需按照以下方式运行测试(假设你在项目根路径下):
phpunit -c app/ --filter="concreteTestPattern" src/Acme/DemoBundle/Tests/MyTest.php

编辑:

上面的代码将运行名称匹配模式/.*concreteTestPattern.*/的所有测试。


那正在运行该文件中的所有测试。我只想运行一个。 - Enrique Moreno OB

3

您可以在PHPUnit命令字符串中使用--filter参数。这将只运行与给定模式匹配的测试。如果您只传递要运行的测试的完整名称,phpunit应该只运行该测试。

如果您有一个与测试相关联的数据提供程序,并且只想运行一个测试用例,您也可以使用--filter <testName>::<testcase name>来过滤它。


1
PHPUnit可以使用配置文件来执行。
在我们的Symfony2项目中,此文件位于app / phpunit.xml.dist。
由于该文件的后缀名为.dist,您需要将其内容复制到名为app / phpunit.xml的文件中。
如果您正在使用诸如Git之类的VCS,则应将新的app / phpunit.xml文件添加到VCS忽略列表中。
您还将注意到配置指定位于app / bootstrap.php.cache的引导文件。 PHPUnit使用此文件来设置测试环境。
我们可以通过从项目的根目录运行以下命令来执行此测试。 -c选项指定PHPUnit应从app目录加载其配置。 $ phpunit -c app

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接