Один из способов проверки абстрактных классов - реализовать его конкретный подкласс, только для тестирования.
Если в абстрактном классе есть только конструктор с аргументами, вы можете делать разные вещи:
- передать null своим аргументам
- передать mocked-объекты своим аргументам
- передать конкретные объекты своим аргументам
какой способ вы выберете, зависит от вашего тестаи о реализации абстрактного класса.- Конечно, вы можете смешать пути.
Пример:
abstract class A{
A(Object o) {
}
}
class TheNullWay extends A {
TheNullWay() {
super(null);
}
}
class TheMockedWay extends A {
TheMockedWay(Object o){
super(o);
}
}
new TheMockedWay(createMockedObject());
Кстати: тестировать класс, использующий абстрактный класс, совершенно иначе.