Не тестируемый базовый класс, расширяющий PHPUnit_Framework_TestCase - PullRequest
25 голосов
/ 24 февраля 2012

Сводка

Как создать базовый класс, расширяющий PHPUnit_Framework_TestCase, и использовать его для создания подклассов реальных тестовых примеров, не проверяя сам базовый класс с помощью PHPUnit?

Дальнейшее объяснение

У меня есть ряд связанных тестовых случаев, для которых я создал базовый класс, который содержит некоторые общие тесты, которые должны наследоваться всеми тестовыми примерами:

BaseClass_TestCase.php:
class BaseClass_TestCase extends PHPUnit_Framework_TestCase { 
  function test_common() {
    // Test that should be run for all derived test cases
  }
}

MyTestCase1Test.php:
include 'BaseClass_TestCase.php';
class MyTestCase1 extends BaseClass_TestCase {
    function setUp() {
      // Setting up
    }
    function test_this() {
      // Test particular to MyTestCase1
    }
}

MyTestCase2Test.php:
include 'BaseClass_TestCase.php';
class MyTestCase2 extends BaseClass_TestCase {
    function setUp() {
      // Setting up
    }
    function test_this() {
      // Test particular to MyTestCase2
    }
}

Моя проблема заключается в том, что при попытке запуститьвсе тесты в папке, он не проходит (без вывода).

Пытаясь отладить, я обнаружил, что проблема заключается в том, что базовый класс сам является подклассом PHPUnit_Framework_TestCase, и поэтому PHPUnit также попытается запустить еготесты.(До этого я наивно думал, что будут проверяться только классы, определенные в реальных тестовых файлах - имена файлов, оканчивающиеся на Test.php.)

Запуск базового класса в качестве тестового примера вне контекста не работает из-заподробности в моей конкретной реализации.

Как можно избежать тестирования базового класса и проверять только производные классы?

1 Ответ

35 голосов
/ 24 февраля 2012

Сделайте это абстрактным, PHPUnit должен игнорировать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...