您可以使用挂钩来获取有关场景的信息,包括它们的标签,但是您只能在@beforeFeature
或中执行此操作@beforeSuite
。
不幸的是,这意味着它不会报告带有被过滤掉的标签的场景。
这是我最初的解决方案。
class Context extends BehatContext {
protected static $scenarioCount = 0;
protected static $scenarioCountWip = 0;
/**
* Count scenarios and WIP
* @BeforeScenario
*/
public function countScenario(Behat\Behat\Event\ScenarioEvent $scenario)
{
self::$scenarioCount++;
if(in_array('wip', $scenario->getScenario()->getTags())) {
self::$scenarioCountWip++;
}
}
/**
* @AfterSuite
*/
public static function coverageReport()
{
echo 'Scenarios: '.self::$scenarioCount.PHP_EOL;
echo ' - in progress: '.self::$scenarioCountWip.PHP_EOL;
echo ' - coverage: '.(100/self::$scenarioCount)*(self::$scenarioCount-self::$scenarioCountWip).PHP_EOL;
echo PHP_EOL;
}
}
功能文件:
Feature: Test Count
@wip
Scenario: Work in progress
@someTag
Scenario: Scenarion with tag
Scenario: Final scenario
运行所有测试时的结果:
Feature: Test Count
@wip
Scenario: Work in progress
@someTag
Scenario: Scenarion with tag
Scenario: Final scenario
Scenarios: 3
- in progress: 1
- coverage: 66.666666666667
3 scenarios (3 passed)
No steps
这是@wip过滤掉的结果:
Feature: Test Count
@someTag
Scenario: Scenarion with tag
Scenario: Final scenario
Scenarios: 2
- in progress: 0
- coverage: 100
2 scenarios (2 passed)
No steps
我会留下这个问题,希望有人找到更好的解决方案。