Netbeans 如何阻止PHPUnit添加包含/必需的文件作为testsuite的一部分?
我试着按照PHPUnit手册中关于如何使用自定义测试执行顺序设置testsuite的内容进行操作。我现在意识到,我只需要以下几行代码,其中一些代码可以让套件正常工作:Netbeans 如何阻止PHPUnit添加包含/必需的文件作为testsuite的一部分?,netbeans,phpunit,testcase,Netbeans,Phpunit,Testcase,我试着按照PHPUnit手册中关于如何使用自定义测试执行顺序设置testsuite的内容进行操作。我现在意识到,我只需要以下几行代码,其中一些代码可以让套件正常工作: public static function suite() { $suite = new PHPUnit_Framework_TestSuite('Package'); return $suite; } 但是当我使用上面的行时,测试执行顺序是由include的排序顺序定义的。当我试图通过suite()对其进行如
public static function suite()
{
$suite = new PHPUnit_Framework_TestSuite('Package');
return $suite;
}
但是当我使用上面的行时,测试执行顺序是由include的排序顺序定义的。当我试图通过suite()对其进行如下更改时,测试将执行两次,首先按照suite()定义的排序顺序执行,然后按照includes的排序顺序执行:
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';
结果(测试执行顺序):
我正在使用Netbeans 7.0beta在Windows7上运行PHP5.3.5/PHPUnit3.5.11。
我读了phpunit手册(http://www.phpunit.de/manual/3.5/en/organizing-tests.html)但我不知道我做错了什么
请帮忙
PS:这个问题可以通过自动加载类来解决。您是否使用正确的参数调用
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;
}
}
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;
}
}
libAllTests.php:
require_once 'lib/libAllTests.php';
class AllTests
{
public static function suite()
{
$suite = new PHPUnit_Framework_TestSuite('Project');
$suite->addTestSuite('LibAllTests');
return $suite;
}
}
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
:运行所有lib测试phpunit/tests/lib/libAllTests.php
:运行所有基本测试phpunit/tests/lib/baseTest.php
:运行所有测试phpunit/tests/*
我正在使用phpUnit 3.5.7。phpUnit 3.5是五年前发布的,已经四年没有得到支持了。但即使在五年前,使用
PHPUnit\u Framework\u TestSuite
对象组成测试套件也不再被认为是一种好的做法
请阅读PHPUnit网站上的文章以及PHPUnit手册中的章节,以了解如何正确组织测试套件。我们不使用套件文件,我们仍然可以使用例如
PHPUnit/tests/lib
为子目录树运行所有测试。我们的优势是测试可以以任何顺序运行。使用手工创建的测试套件还有其他优势吗?如何确保您不会忘记添加新测试?嗨。使用套件的原因只有两个(以我的经验);(1) 如果您希望按特定顺序执行测试,并且(2)您可以让套件设置/拆卸影响所有包含的测试。关于记忆新增加的测试,我还没有一个固定的解决方案。很好的问题,你找到解决方案了吗?谢谢你花时间回答,塞巴斯蒂安。在重新考虑了共享装置之后,在xml文件中以显式的文件顺序定义套件对我来说很好。