我似乎在任何地方都找不到这个问题的答案,但它可能就在我面前(通常是(。
对于我的项目:使用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
将运行两个测试套件