php - PHPUnit:在 TestCase 方法中访问过滤器术语
问题描述
我似乎无法在任何地方找到答案,但它可能就在我面前(通常是)。
对于我的项目:使用 PHPUnit,我在几个文件中有很多测试,但是有一些测试(故意)需要很长时间才能运行,所以我默认将它们标记为“跳过”。
我想要的是一种使用默认命令行指令运行我的所有测试(除了跳过的测试)的方法,但是如果过滤器术语专门用于跳过的测试,那么只有那些测试运行,(或者它们是包含在主运行中)并且跳过的指令被忽略。
如果我可以访问使用的术语,我可以实现这一点,--filter
但我看不出这是否可能。
我知道我可以使用测试套件,并且很可能必须切换到该范例,但如果可能不这样做,那么我更愿意这样做,因为这意味着我可以在 99% 的时间里使用默认测试命令每次都必须指定套件。
作为参考,我将我的test
命令作为别名(到 project\vendor\bin\phpunit),这有助于快速指令。
不幸的是,设置一个@group
值并在默认别名 ( project\vendor\bin\phpunit --exclude-group
) 中使用该值,然后 using$ test --group
不起作用(这两个参数相互抵消)。
解决方案
我想最简单的方法是将您的测试分成两个测试套件。当您defaultTestSuite
在 XML 配置中设置属性时,您不必在运行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
将运行两个测试套件
推荐阅读
- javascript - 带有域选项参数的 cookie.set 不起作用
- r - 使用 Microsoft365R 的 list_emails 列出来自特定文件夹的电子邮件
- python - 如何使用 BeautifulSoup 提取嵌套的 HTML
- c# - C# Winforms Cefsharp 与 Adblock
- postgresql - 最小化查询结果大小算法
- firebase - CocoaPods 找不到 pod "Firebase/CoreOnly" 的兼容版本:
- c - 如何使用位级运算将单精度浮点数转换为整数
- xmpp - 如何使用 smack 自动加入聊天室
- ruby-on-rails - Ruby CanCanCanCan 反向用户查找,更快的方式来做到这一点?
- python - 如何将动态键和值添加到字典