PHPunit不同的自举适用于所有测试套件

2022-08-30 19:43:30
<phpunit backupGlobals="false" colors="true">
    <testsuite name="app1" >
        <directory>./app1</directory>
    </testsuite>
    <testsuite name="app1" >
        <directory>./app2</directory>
    </testsuite>
</phpunit>

如何使第一个和第二个测试套件加载不同的引导?


答案 1

我所做的就是有一个听众。

phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="./phpunit_bootstrap.php"
     backupGlobals="false"
     backupStaticAttributes="false"
     verbose="true"
     colors="true"
     convertErrorsToExceptions="true"
     convertNoticesToExceptions="true"
     convertWarningsToExceptions="true"
     processIsolation="false"
     stopOnFailure="false"
     syntaxCheck="true">
    <testsuites>
        <testsuite name="unit">
            <directory>./unit/</directory>
        </testsuite>
        <testsuite name="integration">
            <directory>./integration/</directory>
        </testsuite>
    </testsuites>
    <listeners>
        <listener class="tests\base\TestListener" file="./base/TestListener.php"></listener>
    </listeners>
</phpunit>

然后是 TestListener.php

class TestListener extends \PHPUnit_Framework_BaseTestListener
{
    public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
    {
        if (strpos($suite->getName(),"integration") !== false ) {
            // Bootstrap integration tests
        } else {
            // Bootstrap unit tests
        }
    }
}

答案 2

您可以创建两个不同的引导程序文件和两个不同的配置 xml 文件

应用1.xml

<phpunit bootstrap="app1BootstrapFile.php" colors="true">
    <testsuite name="app1" >
        <directory>./app1</directory>
    </testsuite>
</phpunit>

应用2.xml

<phpunit bootstrap="app2BootstrapFile.php" backupGlobals="false" colors="true">
    <testsuite name="app2" >
        <directory>./app2</directory>
    </testsuite>
</phpunit>

要运行:

$phpunit --configuration app1.xml app1/
$phpunit --configuration app2.xml app2/

如果你运行一个比另一个多的测试(比如 app1),请命名 xml phpunit.xml 然后你就可以运行

$phpunit app1/
$phpunit --configuration app2.xml app2/

我通过单元/集成测试来做到这一点。


推荐