gpt4 book ai didi

PHPUnit : Execute testSuites in specific order

转载 作者:可可西里 更新时间:2023-10-31 23:41:02 25 4
gpt4 key购买 nike

我有一些测试套件(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 错误,但没关系)。我该如何处理?我想要两个单独的步骤:

  1. 运行“安装(selenium 驱动)”测试套件
  2. 运行“单元测试”测试套件

其他信息:

  • 我有很多测试用例文件,所以我不想指定它们
  • 我知道我也应该避免 backupGlobals=false,对不起,我不能 :( ...
  • 我知道 bootstrap 选项,但我需要“测试”安装(所以它是一个测试套件)

如果你有线索,非常感谢! (我试图找到一个解决方案,但我现在没有找到任何...)

最佳答案

Steven Scott 关于使用批处理文件和两个配置文件的评论是我会做的。它遵循 Unix 哲学,即使用简单的工具将简单的工具串在一起,而不是一个大而复杂的工具包罗万象。

这是一个替代方案,基于对“安装”不仅进行功能测试,而且还设置单元测试所需的数据库和其他固定装置的猜测。那么,如何将功能测试移动到单元测试套件内的 setupBeforeClass() 调用。使用 shell_exec() 运行 phpunit 来运行功能测试,如果失败,则调用 die 或类似的,这样单元测试就不会运行。

附言你听起来好像你知道自己在做什么,但对于后来的人来说:当你有机会时,应该重构单元测试以使用模拟数据库,以便它们可以首先运行,并且经常运行。仍然保留您现有的单元测试套件,但将其合并到功能测试套件中,因为它听起来像是属于它的地方。事实上(合并两个测试套件然后在各处显式使用 @depends)是另一种方法。

关于PHPUnit : Execute testSuites in specific order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20195029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com