Netbeans 如何阻止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()对其进行如

我试着按照PHPUnit手册中关于如何使用自定义测试执行顺序设置testsuite的内容进行操作。我现在意识到,我只需要以下几行代码,其中一些代码可以让套件正常工作:

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
    :运行所有测试
  • phpunit/tests/lib/libAllTests.php
    :运行所有lib测试
  • 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文件中以显式的文件顺序定义套件对我来说很好。