Phpunit игнорирует методы при расширении классов

#php #unit-testing #phpunit

Вопрос:

Я запускаю PHPUnit, и у меня есть класс с несколькими тестами

 class TestVideo extends BaseTest
    {
        public function setUp()
        {
             //etc...
        }

        public function testA()
        {
            .....;
        }

        public function testB()
        {
            .....;
        }
    }
 

Если я расширю этот класс, все тесты будут выполняться в производном классе.

 class TestPhoneVideo extends TestVideo
    {
       
    }
 

Что , если я только хочу testB забежать TestPhoneVideo , но не testA могу ?

Комментарии:

1. BaseTest не исходит от PHPUnit. Если вы используете PHPUnit, то TestVideo должно быть VideoTest и TestPhoneVideo должно быть PhoneVideoTest ( Test суффикс вместо префикса).

2. Я думаю, что у вас неправильное представление о наследовании, наследование некоторых функций, но не других, противоречит идее, что вы наследуете функциональность, потому что это тип базового класса.

Ответ №1:

Вот как работает наследование для классов тестовых примеров: если вы расширяете PhoneVideoTest из VideoTest , то все тесты из VideoTest теперь также являются частью PhoneVideoTest .

При этом доступны обычные средства фильтрации. Например, вы можете аннотировать свой тест(ы) @group и выбрать группу тестов (не) для выполнения --group ( --exclude-group ). Или вы можете использовать --filter .