我有一些testsuites
(PHPUnit-Selenium,PHPUnit),我想按特定顺序运行它们。所以我想运行“安装(selenium驱动)”测试套件然后“单元测试”测试套件。我知道我应该避免单元测试中的依赖,但我的问题不是关于这个(我使用具有许多依赖项的旧应用程序,我需要安装并使用selenium测试这个安装,然后运行单元测试等)。
所以,我不需要针对我的“测试用例”的特定订单,这是可以的,但仅适用于我的“测试套件”。这是我的phpunit.xml
配置文件:
<phpunit backupGlobals="false">
<selenium>
<browser name="Firefox" browser="*firefox" timeout="600" />
</selenium>
<testsuites>
<testsuite name="install (selenium driven)">
<file>./_install.php</file>
<exclude>./bin</exclude>
</testsuite>
<testsuite name="unit tests">
<directory>./</directory>
<exclude>./selenium</exclude>
</testsuite>
</testsuites>
</phpunit>
因此,当我运行phpunit时,它似乎不等待“安装(selenium驱动)”结果,因此“单元测试”失败(MySQL错误,但没关系)。我怎么处理这个?我想要两个单独的步骤:
其他信息:
backupGlobals=false
,对不起,我不能:( ... bootstrap
选项,但我需要“测试”安装(所以它是测试套件)如果你有线索,非常感谢! (我试图找到一个解决方案,但我现在没有找到任何解决方案......)
答案 0 :(得分:1)
这是另一种选择,基于猜测“安装”不仅仅是进行功能测试,而且还设置了单元测试所需的数据库和其他灯具。那么,如何将功能测试移动到单元测试套件内的setupBeforeClass()
调用。使用shell_exec()
运行phpunit来运行功能测试,如果失败,则调用die
或类似的,以便单元测试不运行。
P.S。你听起来好像知道自己在做什么,但对于后来的人来说:当你有机会时,应该重构单元测试以使用模拟数据库,这样它们就可以先运行,而且经常运行。仍保留现有的单元测试套件,但将其合并到功能测试套件中,因为它听起来就像它所属的那样。实际上(合并两个测试套件然后在任何地方使用显式@depends
)是另一种方法。