3

我尝试按照 PHPUnit 手册了解如何使用自定义测试执行顺序设置测试套件。我现在意识到我只需要这些行和一些包括来让套件工作:

public static function suite()
{
    $suite = new PHPUnit_Framework_TestSuite('Package');
    return $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:这个问题可以通过自动加载类来解决。

4

2 回答 2

1

PHPUnit 3.5 是五年前发布的,已经四年不支持了。但即使在五年前,使用PHPUnit_Framework_TestSuite对象来组成测试套件也不再被认为是一种好的做法。

请阅读PHPUnit 网站上的入门文章以及 PHPUnit 手册中有关组织测试的章节,以了解如何正确组织测试套件。

于 2015-06-20T05:08:35.127 回答
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。

于 2011-02-13T15:39:11.163 回答