为了账号安全,请及时绑定邮箱和手机立即绑定

PHPUnit:访问 TestCase 方法中的过滤器术语

PHPUnit:访问 TestCase 方法中的过滤器术语

PHP
慕娘9325324 2023-09-15 21:40:27
我似乎无法在任何地方找到这个问题的答案,但它可能就在我面前(通常是)。对于我的项目:使用 PHPUnit,我在多个文件中进行了许多测试,但有一些测试(故意)需要很长时间才能运行,因此默认情况下我将它们标记为“跳过”。我想要的是一种使用默认命令行指令运行所有测试(除了跳过的测试)的方法,但如果过滤器术语专门用于跳过的测试,则仅运行这些测试,(或者它们是包含在主运行中)并且忽略跳过的指令。如果我可以访问中使用的术语,我就可以实现这一点,--filter但我不知道这是否可能。我知道我可以使用测试套件,并且很可能必须切换到该范例,但如果可能不这样做,那么我更喜欢这样做,因为这意味着我可以在 99% 的时间使用默认测试命令每次都必须指定套房。作为参考,我将我的test命令作为别名(到project\vendor\bin\phpunit),这使得指令变得快速。不幸的是,设置一个@group值并在默认别名 ( project\vendor\bin\phpunit --exclude-group) 中使用该值,然后使用$ test --group不起作用(这两个参数相互抵消)。
查看完整描述

1 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

我想最简单的方法是将您的测试分成两个测试套件。当您在 XML 配置中设置defaultTestSuite属性时,您不必在运行命令时指定测试套件test。如果您想运行其他套件,可以使用该--testsuite选项来实现。

这是一个精简的示例:

<?xml version="1.0" encoding="UTF-8"?>


<phpunit defaultTestSuite="unit" /* ... */>

    <testsuites>

        <testsuite name="unit">

            <directory>tests/Unit</directory>

        </testsuite>

        <testsuite name="functional">

            <directory>tests/Functional</directory>

        </testsuite>

    </testsuites>


    <!-- ... -->

</phpunit>

  • phpunit将运行unit测试套件

  • phpunit --testsuite=functional将运行functional测试套件

  • phpunit --testsuite=unit,functional将运行两个测试套件


查看完整回答
反对 回复 2023-09-15
  • 1 回答
  • 0 关注
  • 57 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信