如何在同一个插件中有两个与不同应用程序相关的测试套件?

时间:2011-01-05 13:28:12

标签: plugins symfony1 phpunit

我目前正在sf 1.4项目中使用sfPhpUnitPlugin,我遇到插件测试问题。

我有一个可以在多个应用程序上使用的插件,我希望每个应用程序都有一个测试套件。如何组织我的测试,以便我可以轻松地将灯具和测试与特定应用相匹配?

我的套件是此模板的副本,随sfPhpunitPlugin一起提供:

<?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}';
    }
}

我想我必须在每个应用程序的app.yml中添加这样的内容:

testunit:
  sfPhpunitPlugin:
    filter:
      - {path: 'backend', ext: '.php'}

但是我很难确定路径键的样子,我觉得它应该是一个完整的路径,因为include_path不包含我在{{1时测试的插件的路径}} 叫做。 有小费吗? 有没有人这样做过?

1 个答案:

答案 0 :(得分:1)

实际上你必须创建两个套件类来实现 sfPhpunitContextInitilizerInterface 接口并实现所有必需的方法。

然后将这两个套件放在两个不同的文件夹中,例如:

SF_PLUGIN_DIR / YOUR_PLUGIN /测试/ PHPUnit的/单元/ APP1 / App1TestSuite.php SF_PLUGIN_DIR / YOUR_PLUGIN /测试/ PHPUnit的/单元/ APP2 / App2TestSuite.php

目录app1或子目录中的所有测试都将在App1TestSuite.php中定义的symfony app中运行,并且与app2目录的规则相同。

如果要在不同的应用程序中动态运行测试,可以在接口(getEnviroment和getApplication)所需的方法中定义此逻辑。

如果您还有任何问题,请随时问我。