2011-01-05 5 views
0

現在、sf 1.4プロジェクトでsfPhpUnitPluginを使用していますが、プラグインのテストに問題があります。同じプラグイン内の異なるアプリケーションに関連する2つのテストスイートをどのように持つことができますか?

私はいくつかのアプリケーションで使用できるプラグインを持っており、アプリケーションごとにテストスイートを用意したいと思います。フィクスチャとテストを特定のアプリケーションと簡単に一致させるために、テストをどのように整理すればよいですか?

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で配信されたテンプレートのコピーです

しかし、パスキーがどのように見えるかを判断するのは難しいですが、include_pathにはaddDirectoryToFilter()が呼び出されたときにテストしているプラ​​グインのパスが含まれていないので、完全パスでなければならないという印象を受けています。 ヒント? まだ誰もこれをしていますか?

答えて

1

実際にはsfPhpunitContextInitilizerInterfaceインターフェイスを実装し、必要なすべてのメソッドを実装する2つのスイートクラスを作成する必要があります。

次に、2つの異なるフォルダに、これらの2つのスイートを入れて、例えば:

SF_PLUGIN_DIR/YOUR_PLUGIN /テスト/ PHPUnitの/ユニット/ APP1/App1TestSuite.php SF_PLUGIN_DIR/YOUR_PLUGIN /テスト/ PHPUnitの/ユニット/ APP2/App2TestSuite .php

ディレクトリapp1またはサブディレクトリ内のすべてのテストは、App1TestSuite.phpで定義されたsymfonyアプリケーションで実行され、app2ディレクトリに対しても同じルールが実行されます。

異なるアプリケーションでテストを動的に実行する場合は、インタフェース(getEnviromentおよびgetApplication)で必要なメソッドでこのロジックを定義できます。

ご質問がある場合はお気軽にお問い合わせください。

+0

アプリケーションは 'getApplication()'メソッドで定義されていますか?あなたの方法では、私は私のアプリ(質問を参照してください)で追加した設定はまだ必要かどうか? – greg0ire

+0

フィルタ機能はアプリケーションコンテキストの設定とは関係ありません。次のプラグインのリリースでは、フィルタの動作がphpunit 3.5のバージョンで変更されたため削除します。 –

+0

プラグインの設定にapp.ymlが使用されていません。代わりに、プラグインにphpunit.ymlという名前のプラグインがあります。 –

関連する問題