Skip to content

Instantly share code, notes, and snippets.

@eliecharra
Last active September 28, 2018 14:00
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eliecharra/9c8b3ba57998b50e14a6 to your computer and use it in GitHub Desktop.
Save eliecharra/9c8b3ba57998b50e14a6 to your computer and use it in GitHub Desktop.
Behat php code coverage context
<?php
use Behat\Behat\Context\Context;
use Behat\Behat\Hook\Scope\BeforeScenarioScope;
/**
* Created by PhpStorm.
* User: elie
* Date: 01/09/15
* Time: 11:29
*/
class CoverageContext implements Context
{
/**
* @var PHP_CodeCoverage
*/
private static $coverage;
/** @BeforeSuite */
public static function setup()
{
$filter = new PHP_CodeCoverage_Filter();
$filter->addDirectoryToBlacklist(__DIR__ . "/../../vendor");
$filter->addDirectoryToWhitelist(__DIR__ . "/../../src");
self::$coverage = new PHP_CodeCoverage(null, $filter);
}
/** @AfterSuite */
public static function tearDown()
{
$writer = new PHP_CodeCoverage_Report_HTML();
$writer->process(self::$coverage, __DIR__ . "/../../app/logs/coverage");
}
private function getCoverageKeyFromScope(BeforeScenarioScope $scope)
{
$name = $scope->getFeature()->getTitle() . '::' . $scope->getScenario()->getTitle();
return $name;
}
/**
* @BeforeScenario
*/
public function startCoverage(BeforeScenarioScope $scope)
{
self::$coverage->start($this->getCoverageKeyFromScope($scope));
}
/** @AfterScenario */
public function stopCoverage()
{
self::$coverage->stop();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment