使用PHPUnit测试多个类

时间:2010-01-01 14:45:25

标签: php testing phpunit

这可能是一个愚蠢的问题,但我似乎无法使其发挥作用。

我正在使用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”以及文件中的所有内容。我怎样才能轻松运行多个测试类?

2 个答案:

答案 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