Как я могу создать базовый класс, который расширяет 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.)
Запуск базового класса в качестве тестового примера из контекста не работает из-за деталей в моей конкретной реализации.
Как я могу избежать тестирования базового класса и проверять только производные классы?
Сделайте его абстрактным, PHPUnit должен его игнорировать.