加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHPUnit:按特定顺序执行testSuite

发布时间:2020-12-13 22:50:39 所属栏目:PHP教程 来源:网络整理
导读:我有一些测试套件( PHPUnit-Selenium,PHPUnit),我想按特定顺序运行它们.所以我想运行“安装(selenium驱动)”测试套件然后“单元测试”测试套件.我知道我应该避免单元测试中的依赖,但我的问题不是关于这个(我使用具有许多依赖项的旧应用程序,我需要安装并使用
我有一些测试套件( 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错误,但没关系).我怎么处理这个?我想要两个单独的步骤:

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

其他信息:

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

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

解决方法

史蒂文斯科特评论使用批处理文件和两个配置文件将是我会做的.它遵循Unix的理念,即使用简单的工具将简单的工具串在一起,而不是一个完成所有工作的大型复杂工具.

这是另一种选择,基于猜测“安装”不仅仅是进行功能测试,而且还设置了单元测试所需的数据库和其他灯具.那么,如何将功能测试移动到单元测试套件中的setupBeforeClass()调用.使用shell_exec()运行phpunit来运行功能测试,如果失败,则调用die或类似的,以便单元测试不运行.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读