这可能是一个愚蠢的问题,但我似乎无法使其发挥作用。
我正在使用PHPUnit进行测试。目前我在一个名为Tests.php的文件中有两个类:
class XTest extends PHPUnit_Framework_TestCase {...}
class YTest extends PHPUnit_Framework_TestCase {...}
但是,我无法同时运行这两个类。我在Windows上运行以下命令:
php "C:\Program Files (x86)\PHP\phpunit" Tests
它尝试运行一个名为“Tests”的测试类。相反,我希望它运行“XTest”和“YTest”以及文件中的所有内容。我怎样才能轻松运行多个测试类?
答案 0 :(得分:5)
将所有测试放在同一目录下,并要求PHPUnit以递归方式遍历它们,但如果您在不同目录下进行测试或只想运行特定测试类的特定部分,那么@group annotation可能就是你要找的东西。
执行测试时,可以使用php "C:\Program Files (x86)\PHP\phpunit" --group <insert_name_of_group_to_which_xtests_and_ytests_belong>
,PHPUnit只会执行PHPDoc中@group insert_name_of_group_to_which_xtests_and_ytests_belong
的测试。
答案 1 :(得分:3)
The PHPUnit Docs解释命令行测试运行器期望的参数。
在您的情况下,您提供Tests
,这意味着PHPUnit会在文件Tests
中查找类Tests.php
。
有了这些知识,很容易看出组织测试的最佳方法是为每个文件编写一个测试类,文件名等于TestClassName.php
。
但是,如果由于某种原因你不想这样做,你可以提供一个额外的参数来告诉测试运行器声明测试类的文件:
php "C:\Program Files (x86)\PHP\phpunit" XTest Tests.php
php "C:\Program Files (x86)\PHP\phpunit" YTest Tests.php