我已经定义了需要在phpunit.xml中按顺序执行的测试文件列表。
根据http://phpunit.de/manual/3.7/en/organizing-tests.html#organizing-tests.xml-configuration,提到测试用例的顺序可以定义为:
<phpunit>
<testsuites>
<testsuite name="Object_Freezer">
<file>Tests/Freezer/HashGenerator/NonRecursiveSHA1Test.php</file>
<file>Tests/Freezer/IdGenerator/UUIDTest.php</file>
<file>Tests/Freezer/UtilTest.php</file>
<file>Tests/FreezerTest.php</file>
<file>Tests/Freezer/StorageTest.php</file>
<file>Tests/Freezer/Storage/CouchDB/WithLazyLoadTest.php</file>
<file>Tests/Freezer/Storage/CouchDB/WithoutLazyLoadTest.php</file>
</testsuite>
</testsuites>
</phpunit>
但似乎PHPUnit忽略了phpunit.xml中的配置并按字母顺序执行测试用例。
我想定义顺序只是因为我希望我的一个测试用例最后执行。 以下是我的代码:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
colors="true"
stopOnFailure="false"
forceCoversAnnotation="true"
bootstrap="../application/third_party/CIUnit/bootstrap_phpunit.php">
<testsuites>
<testsuite name="ModelTests">
<directory suffix=".php">models</directory>
<file>./models/aa.php</file>
<file>./models/bb.php</file>
<file>./models/cc.php</file>
<file>./models/dd.php</file>
<file>./models/ab.php</file>
<file>./models/ac.php</file>
</testsuite>
</testsuites>
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<directory suffix=".php">models</directory>
</whitelist>
</filter>
</phpunit>
当我执行phpunit时,它打印: 配置读自/var/www/builds/latest/tests/phpunit.xml
有什么想法吗?
答案 0 :(得分:3)
你需要告诉phpunit使用测试套件,以便它以正确的顺序运行测试。我猜你只是使用phpunit .
或类似的东西来运行测试。在这种情况下,PHPUnit会加载测试并以非常随机的方式运行它们。为了使用您指定的顺序,您需要执行phpunit --testsuite ModelTest
这告诉PHPUnit使用套件中指定的顺序。
但是,它也只会运行XML中列出的测试,因此请确保您的列表是全面的。
此外,正如评论中的链接答案所述,要求您的测试按特定顺序运行并不是理想的情况。您应该尝试更改设计或测试,以免依赖于按特定顺序运行。