2013-08-15 3 views
10

Я ищу способ запуска теста несколько раз с разными настройками.Запуск тестового теста PHPUnit несколько раз

Я тестирую класс доступа к базе данных (десятки методов тестирования) и хочу протестировать его в «нормальном режиме», а затем в «режиме отладки». Оба режима должны давать одинаковые результаты испытаний.

Есть ли возможность сделать это в настройках тестового набора? Или переопределить метод run()? Я не хочу, чтобы написать тест дважды, конечно :)

Спасибо

редактировать: GOT IT!

public function run(PHPUnit_Framework_TestResult $result = NULL) 
{ 
    if ($result === NULL) { 
     $result = $this->createResult(); 
    } 

    /** 
    * Run the testsuite multiple times with different debug level 
    */ 
    $this->debugLevel = 0; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    $this->debugLevel = 8; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    $this->debugLevel = 16; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    return $result; 
} 

public function setUp() 
{ 
    parent::setUp(); 
    $this->myclass->setOptions('debug', $this->debugLevel); 
} 
+8

Посмотрите на функции '@ dataProvider', которые испускают тестовые наборы данных. – Sven

+0

Я знаю данные dataProviders :) Я просто хочу изменить одну простую настройку класса, а затем снова запустить ВСЕ методы тестирования. Что-то вроде: run(); $ Class-> setDebug (истина); бег(); –

+0

Итак, я предполагаю, что это не обычный случай. Вы пытались расширить исходный класс тестов и изменить одну вещь в 'setUp()'. Это должно наследовать весь тестовый код под новым ярлыком и дважды запускать этот материал. – Sven

ответ

-1

PHPUnit предлагает испытательные декораторы. documentation фактически повторяет декоратор как пример того, что делать с декоратором. Декоратор был бы идеальным способом реализации поведения в многоразовом режиме без зависимости от подкласса PHPUnit_Framework_TestCase.

Смежные вопросы