Независимость phpunit testsuite

Я запускаю серию тестов в phpunit, которые существуют в отдельных наборах тестов, список которых контролируется файлом конфигурации phpunit. Когда тесты запускаются индивидуально ( т.е. не через файл конфигурации и, следовательно, через набор тестов, за раз) они проходят, но при совместном запуске я получаю сбой.

При тщательном изучении проблема заключается в том, что каждый из этих наборов тестов загружается в структуру (через require_once), и эта структура выполняет некоторую внутреннюю конфигурацию на основе настроек во время require_once. Похоже, что между запуском наборов тестов, отдельно перечисленных в файле конфигурации phpunit, разные вещи сохраняются. В этом конкретном случае фреймворк уже считается загруженным.

Итак - есть ли способ заставить phpunit выполнять последовательность наборов тестов независимо, то есть эквивалентно запуску phpunit в наборах тестов по одному? (phpunit запускается cruisecontrol на машине автотеста и локально разработчиками перед отправкой.) Я безуспешно пробовал такие варианты, как '--process -olated' и '--no-globals-backup'.

Быстрый пример, иллюстрирующий проблему: файл 'constant.php':

<?php
if (defined('XYZZY')) define('TEST', 1);
else define('TEST', 2);

набор тестов 'TestOne.php':

<?php
define('XYZZY', "");
require_once('constant.php');
class TestOne extends PHPUnit_Framework_TestCase
{
   public function testOne()
   {
      $this->assertEquals(TEST, 1);
   }
}

аналогичный набор тестов 'TestTwo.php':

<?php
require_once('constant.php');
class TestTwo extends PHPUnit_Framework_TestCase
{
   public function testTwo()
   {
      $this->assertEquals(TEST, 2);
   }
}

и конфигурация phpunit файл:

<phpunit>
  <testsuites>
    <testsuite name="First">
      <file>./TestOne.php</file>
    </testsuite>

    <testsuite name="Second">
      <file>./TestTwo.php</file>
    </testsuite>
  </testsuites>
</phpunit>
10
задан edorian 11 January 2012 в 12:41
поделиться