我尝试按照PHPUnit手册介绍如何使用自定义测试执行顺序设置测试套件。我现在意识到我只需要这些线路和一些包括让套件工作:
public static function suite()
{
$suite = new PHPUnit_Framework_TestSuite('Package');
return $suite;
}
但是当我使用上面的行时,测试执行顺序是由我的包含的排序顺序定义的。当我尝试通过suite()更改它时,如下所示,测试执行两次,首先按照suite()定义的排序顺序执行,然后按照包含的排序顺序执行:
public static function suite()
{
$suite = new PHPUnit_Framework_TestSuite('Package');
$suite->addTestSuite('Package_Class1Test');
$suite->addTestSuite('Package_Class2Test');
$suite->addTestSuite('Package_Class3Test');
return $suite;
}
包括完成:
require_once 'Package/Class3Test.php';
require_once 'Package/Class2Test.php';
require_once 'Package/Class1Test.php';
结果(测试执行顺序):
1) Class1Test
2) Class2Test
3) Class3Test
4) Class3Test
5) Class2Test
6) Class1Test
我正在使用Netbeans 7.0beta在Windows 7上运行PHP 5.3.5 / PHPUnit 3.5.11。 我阅读了phpunit手册(http://www.phpunit.de/manual/3.5/en/organizing-tests.html),但我不知道我做错了什么......
请帮忙。
PS:这个问题可以通过自动加载类来解决。
答案 0 :(得分:1)
PHPUnit 3.5五年前发布,四年没有得到支持。但即使五年前,使用$modifierSupprimerProjet = new ModifierSupprimerProjet();
$form = $this->createForm('app_modifier_supprimer_projet', $modifierSupprimerProjet);
个对象组成一个测试套件也不再是一个好习惯。
请阅读PHPUnit网站上的Getting Started文章以及PHPUnit手册中的organizing tests章节,了解如何正确组织测试套件。
答案 1 :(得分:0)
您是否使用正确的参数调用phpunit
?
我有这个设置,适用于套件。
/tests/
/tests/allTests.php
/tests/lib/
/tests/lib/libAllTests.php
/tests/lib/baseTest.php
/tests/lib/coreTest.php
/tests/lib/...
<强> allTests.php:强>
require_once 'lib/libAllTests.php';
class AllTests
{
public static function suite()
{
$suite = new PHPUnit_Framework_TestSuite('Project');
$suite->addTestSuite('LibAllTests');
return $suite;
}
}
<强> libAllTests.php:强>
require_once 'baseTest.php';
require_once 'coreTest.php';
class LibAllTests
{
public static function suite()
{
$suite = new PHPUnit_Framework_TestSuite('Lib');
$suite->addTestSuite('CoreTest');
$suite->addTestSuite('BaseTest');
return $suite;
}
}
从命令提示符我可以调用:
phpunit /tests/allTests.php
:运行所有测试phpunit /tests/lib/libAllTests.php
:运行所有lib测试phpunit /tests/lib/baseTest.php
:运行所有基础测试phpunit /tests/*
:运行所有测试在所有四种情况下,核心测试都在基础测试之前运行,并且没有测试重复两次。
我正在使用phpUnit 3.5.7。