У меня есть запечатанный класс с защищенными методами, поведение которых я хочу протестировать. Это затрудняет непосредственное тестирование и затрудняет имитацию.
Это кодовая база, которая не была разработана в стиле TDD, и сейчас я добавляю модульные тесты для конкретных функций.
Какие общие подходы возможны в этом случае? На данный момент у меня есть:
- Распечатать класс. Затем создайте прокси или адаптер, производный от класса в нашем тестовом коде, для туннелирования доступа к защищенному методу.
- Вынесите поведение в защищенном методе за пределы делегата / функтора и повторно внедрите его. Затем независимо проверьте факторизованное поведение.
- Проверьте, вызвав ближайший общедоступный метод в иерархии наследования, который использует защищенный метод. Потенциально приводит к множеству насмешек и подверженности риску, когда код, отличный от тестируемого, изменяется - создавая хрупкие тесты.
- Используйте отражение, чтобы получить доступ к защищенному методу. Затем вызовите его напрямую.
Есть ли еще?
задан Tim Barrass 20 January 2011 в 14:30
поделиться