аннотация, чтобы сделать частный метод общедоступным только для тестовых классов [дубликат]

На этот вопрос уже есть ответ здесь:

У кого есть решение этой общей потребности.

У меня есть класс в моем приложении.

некоторые методы являются общедоступными, так как они являются частью API, а некоторые из них являются частными, так как они предназначены для внутреннего использования, чтобы сделать внутренний поток более читабельным

, скажем, я хочу написать модульный тест или более похожий на интеграционный тест, который будет расположен в другом пакете, который будет разрешено вызывать этот метод, НО, я хочу, чтобы нормальный вызов этого метода был запрещен, если вы попытаетесь вызвать его из классов самого приложения

, поэтому я думал о чем-то подобном

public class MyClass {

   public void somePublicMethod() {
    ....
   }

   @PublicForTests
   private void somePrivateMethod() {
    ....
   }
}

Приведенная выше аннотация пометит частный метод как "общедоступный для тестирования" что означает, что компиляция и время выполнения будут разрешены для любого класса, который находится в пакете test ..., в то время как компиляция и \ или время выполнения завершатся ошибкой для любого класса, который не входит в пакет test.

какие-либо мысли? есть ли такая аннотация? есть ли лучший способ сделать это?

кажется, что чем больше модульных тестов вы напишете, тем больше вы будете вынуждены нарушить инкапсуляцию ...

83
задан Kumetix 2 August 2011 в 14:02
поделиться