Я хотел бы приблизить тестовое покрытие поведения с использованием Behat в PHP.
Очевидно, что, в отличие от покрытия кода, поведенческое покрытие не поддается точной количественной оценке, однако мы можем знать, какое поведение мы планируем адаптировать с самого начала. Например, мы можем знать, что пользователь может 1) купить продукт, 2) прокомментировать продукт. Для этого мы бы хотели написать два теста BDD.
Для начала мы могли бы создать заполнители и использовать стандартный тег @wip, чтобы пометить каждый тест как незавершенный.
У меня есть два связанных вопроса:
Можно ли иметь отчет Behat об общем количестве сценариев и общем количестве сценариев с данным тегом (т. Е. @Wip)?
Может ли Бехат узнать этот счет, даже если вы используете фильтр «~ @ wip», чтобы игнорировать эти тесты?
Вы можете использовать хуки для получения информации о сценариях, включая их теги, однако вы можете сделать это только в @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
Я оставлю вопрос открытым в надежде, что кто-то найдет лучшее решение.
Других решений пока нет …