Тестирование превосходит модификаторы конфиденциальности. Действительно, как часто ошибка возникает из-за «слишком большой» видимости метода? По сравнению с ошибками, вызванными методом, который не был полностью протестирован?
Было бы неплохо, если бы у Java была опция "друг", например, C ++. Но ограничение языка никогда не должно быть оправданием для того, чтобы что-то не тестировать.
Майкл Фезерс присоединяется к этой дискуссии в «Эффективной работе с устаревшим кодом» (отличная книга) и предполагает, что это может быть запах подкласса, который хочет быть извлеченным (и иметь публичные методы).
В нашем магазине (~ 1M LOC) мы заменяем 'private' на '/ TestScope /' в качестве индикатора того, что метод должен быть эффективно закрытым, но все же тестируемым.
Попытка обойти "личное" с помощью отражения - это ИМХО запах. Это затрудняет написание, чтение и отладку тестов, чтобы сохранить «фетиш» конфиденциальности, над которым вы все равно работаете. Зачем?