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

Как unit test абстрактные классы

Используется инструмент создания единичных тестов в Visual Studio и, очевидно, он пытается создать экземпляры моих абстрактных классов.

Мой вопрос: должен ли я попытаться выполнить unit test способ, которым Visual Studio пытается заставить меня это сделать, или я должен создать экземпляр класса mock, или мне нужно только проверить методы, которые используют этот абстрактный класс

Спасибо.

4b9b3361

Ответ 1

Если есть методы этого абстрактного класса, которые стоит проверить, вы должны их протестировать. Вы всегда можете подклассифицировать абстрактный класс для теста (и назовите его как MyAbstractClassTesting) и протестировать этот новый конкретный класс.

Ответ 2

Есть две противоположные точки зрения:

  • Не тестировать сам абстрактный класс, тестировать конкретные классы, унаследованные от него
  • Абстрактный класс также должен быть протестирован, потому что он обеспечивает некоторую встроенную логику, разделяемую всеми унаследованными классами, поэтому вы просто проверяете базовую логику в абстрактном классе один раз

Я предпочитаю второй вариант (в настоящее время) и тестирование абстрактных классов с помощью функции RhinoMocks PartialMock, которая позволяет мне создать макет абстрактного класса.

Ответ 3

  • Просто протестируйте реализующие классы.

  • Вы всегда можете создать определенную реализацию для тестирования, которая не добавит дополнительной функциональности.

  • Слушайте тесты. Использование издевательских инструментов, которые делают магию для тестирования абстрактных классов и частных методов и т.д., Является запахом тестового кода