Как выполнить выборку из нескольких тестовых случаев
Я хочу с легкостью выполнить несколько выбранных тестовых примеров из моего класса из нескольких тестовых примеров, используя модуль php.
Поскольку мои 1-2 тестовые примеры терпят неудачу из множества тестовых случаев, а также трудно найти полный набор тестов для этих двух, есть ли какой-либо метод без добавления комментариев другим или копирование этих двух методов в разных пакетах.
Спасибо всем заблаговременно
Ответы
Ответ 1
Вы можете запускать отдельные тестовые примеры или отдельные тестовые классы из ваших наборов с помощью - параметр фильтра 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
Ответ 2
--filter
опция принимает регулярное выражение как его значение (я использую phpunit 3.7). Это позволяет вам указать тесты, которые будут исключены, используя утверждение, подобное следующему:
--filter='/::((?!test(Else|Same))\w+)/'
Ответ 3
Если вы предпочитаете фильтровать по коду, вы можете пометить тест, который нужно пропустить в методе 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