Разве я не должен тестировать абстрактные классы?
В большинстве случаев это будет мой выбор.
Причина № 1: тот факт, что некоторый класс наследуется от абстрактного класса, является подробностью реализации ,не поведение .Мы не хотим связывать наши тесты с деталями реализации.
Причина № 2: Я ожидаю, что код в абстрактном классе будет охватываться тестами, которые охватывают его потомков.
Есливы разрабатывали «сначала тестирование», затем у вас уже есть охват этого кода, потому что абстрактный класс будет тем, что вы представите в своем дизайне путем рефакторинга класса, который уже тестировался.