2011-01-05 6 views
0

현재 sf 1.4 프로젝트에서 sfPhpUnitPlugin으로 작업 중이며 플러그인 테스트에 문제가 있습니다.동일한 플러그인의 서로 다른 응용 프로그램과 관련된 두 가지 테스트 스위트를 어떻게 가질 수 있습니까?

여러 응용 프로그램에서 사용할 수있는 플러그인이 있으며 응용 프로그램마다 테스트 스위트를 갖고 싶습니다. 조명기와 테스트를 특정 어플리케이션과 쉽게 비교할 수 있도록 테스트를 어떻게 구성 할 수 있습니까?

testunit: 
    sfPhpunitPlugin: 
    filter: 
     - {path: 'backend', ext: '.php'} 
: 나는 각 응용 프로그램의 app.yml이 뭔가를 추가 할 수 있다고 가정

<?php 

class {className} extends sfBasePhpunitTestSuite 
    implements sfPhpunitContextInitilizerInterface 
{ 
    /** 
    * Dev hook for custom "setUp" stuff 
    */ 
    protected function _start() 
    { 
     $this->_initFilters(); 
    } 

    /** 
    * Dev hook for custom "tearDown" stuff 
    */ 
    protected function _end() 
    { 
    } 

    protected function _initFilters() 
    { 
     $filters = sfConfig::get('app_sfPhpunitPlugin_filter', array()); 
     foreach ($filters as $filter) { 
     PHPUnit_Util_Filter::addDirectoryToFilter($filter['path'], $filter['ext']); 
     } 
    } 

    public function getApplication() 
    { 
     return '{application}'; 
    } 
} 

:

내 스위트 룸은 이것을 sfPhpunitPlugin 함께 제공되는 템플릿의 복사본입니다

하지만 path 키가 어떻게 보이는지 확인하는 데 어려움이 있습니다. include_path에 addDirectoryToFilter()이 호출 될 때 테스트중인 플러그인의 경로가 포함되어 있지 않기 때문에 전체 경로 여야한다는 인상 아래에 있습니다. 팁이 있습니까? 아직이 작업을 수행 한 사람이 있습니까?

답변

1

실제로 sfPhpunitContextInitilizerInterface 인터페이스를 구현하고 필요한 모든 메소드를 구현 한 두 개의 스위트 클래스를 만들어야합니다.

그런 다음 예를 들어, 두 개의 서로 다른 폴더에 두 개의 스위트 룸을 넣어 :

SF_PLUGIN_DIR/YOUR_PLUGIN/테스트/phpunit을/단위/APP1/App1TestSuite.php SF_PLUGIN_DIR/YOUR_PLUGIN/테스트/phpunit을/단위/APP2/App2TestSuite .php

디렉토리 app1 또는 하위 디렉토리의 모든 테스트는 app1TestSuite.php에 정의 된 심포니 앱에서 실행되고 app2 디렉토리에 대해서도 동일한 규칙이 적용됩니다.

다른 응용 프로그램에서 테스트를 동적으로 실행하려면 인터페이스에서 필요한 메소드 (getEnviroment 및 getApplication)에서이 논리를 정의 할 수 있습니다.

질문이 있으시면 언제든지 물어보십시오.

+0

앱이'getApplication()'메소드로 정의되어 있습니까? 귀하의 방법으로, 내가 (질문 참조) 내 애플 리케이션에 추가 한 구성은 여전히 ​​필요하지 않습니까? – greg0ire

+0

필터 기능은 응용 프로그램 컨텍스트 설정과 관련이 없습니다. 다음 플러그인 버전에서는 phpunit 3.5 버전에서 필터 동작이 변경 되었기 때문에 제거 할 것입니다. –

+0

플러그인 구성에 app.yml이 더 이상 사용되지 않습니다. 대신 플러그인에 phpunit.yml이라는 자체가 있습니다. –

관련 문제