Подтвердить что ты не робот

Не тестируемый базовый класс, расширяющий PHPUnit_Framework_TestCase

Резюме

Как я могу создать базовый класс, который расширяет 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 -.)

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

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

4b9b3361

Ответ 1

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

Ответ 2

Чтобы избежать тестирования любого файла, вы можете исключить его из файла phpunit.xml. В вашем случае это <exclude>./tests/BaseClass_TestCase.php</exclude>https://i.imgur.com/WYoLTzx.png