2014-10-22 3 views
1

PHP의 Behat을 사용하여 동작 테스트를 대략적으로 테스트하고 싶습니다.Behat의 동작 테스트 범위

분명히 코드 적용 범위와 달리 행동 범위는 정확하게 계량 할 수 없지만 처음부터 어떤 행동을 수용 할 것인지 알 수 있습니다. 예를 들어, 사용자는 1) 제품을 구입할 수 있고, 2) 제품에 대해 의견을 나눌 수 있습니다. 이를 위해 우리는 두 가지 BDD 테스트를 작성하려고합니다.

먼저 우리는 자리 표시자를 만들고 표준 @wip 태그를 사용하여 각 테스트를 진행중인 작업으로 표시 할 수 있습니다.

나는이 개 관련 질문이 있습니다

이 시나리오의 총 수에 대한 보고서 Behat 가질 수 있으며,을 주어진 태그 시나리오의 총 수 (즉 @wip)?

"~ @ wip"필터를 사용하여 테스트를 무시한 경우에도 Behat에서 해당 개수를 알 수 있습니까?

+1

http://tech.vg.no/2014/01/21/generating-code-coverage-of-behat-tests/하지만 조금 해킹 된 것 같습니다. –

+0

이것은 코드 커버리지가 아닌 알려진 동작 범위를 나타냅니다. . 그러나 단위 테스트를 작성할 시간이 없으면 범위를 알면 좋습니다. :) – DanielM

답변

0

후크를 사용하면 시나리오를 포함한 태그에 대한 정보를 얻을 수 있지만 @beforeFeature 또는 @beforeSuite에서만 가능합니다.

불행히도 이것은 필터링되는 태그가있는 시나리오에 대해서는보고하지 않습니다.

내 초기 솔루션입니다. 모든 테스트 실행시

Feature: Test Count 

    @wip 
    Scenario: Work in progress 

    @someTag 
    Scenario: Scenarion with tag 

    Scenario: Final scenario 

결과 :

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 

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 

나 ' 희망의 문을 열어 두겠다. 누군가가 더 나은 해결책을 찾는다.