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

我似乎无法在任何地方找到这个问题的答案,但它可能就在我面前(通常是)。

对于我的项目:使用 PHPUnit,我在多个文件中进行了许多测试,但有一些测试(故意)需要很长时间才能运行,因此默认情况下我将它们标记为“跳过”。

我想要的是一种使用默认命令行指令运行所有测试(除了跳过的测试)的方法,但如果过滤器术语专门用于跳过的测试,则仅运行这些测试,(或者它们是包含在主运行中)并且忽略跳过的指令。

如果我可以访问中使用的术语,我就可以实现这一点,--filter但我不知道这是否可能。

我知道我可以使用测试套件,并且很可能必须切换到该范例,但如果可能不这样做,那么我更喜欢这样做,因为这意味着我可以在 99% 的时间使用默认测试命令每次都必须指定套房。

作为参考,我将我的test命令作为别名(到project\vendor\bin\phpunit),这使得指令变得快速。

不幸的是,设置一个@group值并在默认别名 ( project\vendor\bin\phpunit --exclude-group) 中使用该值,然后使用$ test --group不起作用(这两个参数相互抵消)。


慕娘9325324
浏览 58回答 1
1回答

郎朗坤

我想最简单的方法是将您的测试分成两个测试套件。当您在 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将运行两个测试套件
打开App,查看更多内容
随时随地看视频慕课网APP