На этот вопрос уже есть ответ здесь:
У кого есть решение этой общей потребности.
У меня есть класс в моем приложении.
некоторые методы являются общедоступными, так как они являются частью API, а некоторые из них являются частными, так как они предназначены для внутреннего использования, чтобы сделать внутренний поток более читабельным
, скажем, я хочу написать модульный тест или более похожий на интеграционный тест, который будет расположен в другом пакете, который будет разрешено вызывать этот метод, НО, я хочу, чтобы нормальный вызов этого метода был запрещен, если вы попытаетесь вызвать его из классов самого приложения
, поэтому я думал о чем-то подобном
public class MyClass {
public void somePublicMethod() {
....
}
@PublicForTests
private void somePrivateMethod() {
....
}
}
Приведенная выше аннотация пометит частный метод как "общедоступный для тестирования" что означает, что компиляция и время выполнения будут разрешены для любого класса, который находится в пакете test ..., в то время как компиляция и \ или время выполнения завершатся ошибкой для любого класса, который не входит в пакет test.
какие-либо мысли? есть ли такая аннотация? есть ли лучший способ сделать это?
кажется, что чем больше модульных тестов вы напишете, тем больше вы будете вынуждены нарушить инкапсуляцию ...