PHPUnit:访问TestCase方法中的过滤项



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

对于我的项目:使用PHPUnit,我在几个文件中有很多测试,但也有一些测试(故意(需要很长时间才能运行,所以我默认将它们标记为"跳过"。

我想要的是使用默认的命令行指令运行我的所有测试(除了跳过的测试(,但如果筛选项是专门针对跳过的测试的,那么只运行这些测试(或者它们包含在主运行中(,跳过的指令将被忽略。

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

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

作为参考,我将test命令作为别名(到project\vendor\bin\phpunit(,这有助于快速指令。

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

我想最简单的方法是将测试拆分为两个测试套件。在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将运行两个测试套件

最新更新