<phpunit backupGlobals="false" colors="true">
<testsuite name="app1" >
<directory>./app1</directory>
</testsuite>
<testsuite name="app1" >
<directory>./app2</directory>
</testsuite>
</phpunit>
如何让第一次和第二次测试加载不同的bootstrap?
答案 0 :(得分:20)
我所做的就是拥有一名听众。
<强> 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
}
}
}
答案 1 :(得分:12)
您可以创建两个不同的引导程序文件和两个不同的配置xml文件
<强> app1.xml 强>
<phpunit bootstrap="app1BootstrapFile.php" colors="true">
<testsuite name="app1" >
<directory>./app1</directory>
</testsuite>
</phpunit>
<强> app2.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/
我使用单元/集成测试来完成此任务。
答案 2 :(得分:3)
你不能。
PHPUnit只允许您指定一个引导程序文件,并且您需要设置所有内容,以便每个测试套件的每个测试用例都可能被执行,并且PHPUnit没有如何从引导程序xml文件为每个测试套件运行“设置”代码
使用时,使用phpunit 3.6不鼓励TestSuite
类,你可以在那些类中执行,但我的建议是在bootstrap.php中运行所有通用引导程序代码,是否需要特殊的测试设置在app1和app2中有一个App1_TestCase
你继承。
App1
真的应该是一个完整的应用程序我建议有两个单独的项目,他们有自己的测试和设置代码,而不是试图在一个phpunit运行中运行它们。