Как выполнить выбор тестовых случаев из нескольких тестовых случаев - PullRequest
20 голосов
/ 01 июля 2011

Я хочу выполнить несколько выбранных тестовых примеров из моего класса нескольких тестовых примеров с легкостью используя модуль php.

Поскольку мои 1-2 тестовых примера не дают результатов из нескольких тестовых примеров, а также затрудняют повторное выполнение всего набора тестов для этих двух, существует ли какой-либо метод без добавления комментариев к другим или копирования этих двух методов в другой набор.

Спасибо всем заранее

Ответы [ 3 ]

31 голосов
/ 01 июля 2011

Вы можете запускать отдельные тестовые наборы или отдельные тестовые классы из своих пакетов, используя - фильтр cli опция :

--filter <pattern>        Filter which tests to run.

--filter запускает тесты, имя которых соответствует заданному шаблону. Шаблон может быть либо именем отдельного теста, либо регулярным выражением, совпадающим с несколькими именами тестов.

Пример

Возьмите следующий пример класса теста BlaTest, содержащий тестовые случаи testSame и testElse в файле BlaTest.php:

// BlaTest.php
<?php

class BlaTest extends PHPUnit_Framework_TestCase {

    public function testSame() { $this->assertSame(1,1); }
    public function testElse() { $this->assertSame(1,1); }

}

Выполнение всех тестовых случаев в BlaTest

Этот фильтр соответствует имени класса теста.

$ phpunit --filter BlaTest

Запуск одного контрольного примера в BlaTest

Этот фильтр соответствует имени тестового примера, а затем указывает, чтобы запустить этот фильтр в файле BlaTest.php.

$ phpunit --filter testSame BlaTest.php
4 голосов
/ 21 мая 2013
Опция

--filter принимает регулярное выражение в качестве значения (я использую phpunit 3.7).Это позволяет вам указать тесты, которые будут исключены с помощью утверждения, такого как: --filter='/::((?!test(Else|Same))\w+)/'

2 голосов
/ 01 июля 2011

Если вы предпочитаете фильтровать код, вы можете пометить тест, который будет пропущен в методе setUp () - [1], проверив, какой тест будет запущен, используя $ this-> getName (). Таким образом, эти тесты будут показаны как пропущенные.

Пример:

class FooTest extends PHPUnit_Framework_TestCase {

  public function setUp() {
    if( 'testIwantToSkip' === $this->getName() ) {
      $this->markTestSkipped( 'Test skipped!' );
    }
  }

  ...
}

[1] http://www.phpunit.de/manual/current/en/fixtures.html

...