Почему аннотированные поля @Rule в JUnit должны быть открытыми?
В тестовом примере JUnit поле помечено @Rule
должен быть публичным. Это нарушает общее соглашение о кодировании Java (все переменные-члены класса не должны быть открытыми). Почему JUnit требует этого?
Документация для @Rule
: https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/Rule.java
1 ответ
Бегун JUnit должен будет размышлять о поле, чтобы запустить правило. Если бы поле было приватным, доступ был бы IllegalAccessException
,
Другим вариантом было бы, чтобы бегун изменил доступ с частного на общедоступный, прежде чем запускать правило. Однако это может вызвать проблемы в случае, если включен менеджер безопасности.
Если вы хотите избежать использования открытых полей в своем тестовом классе, вы можете из JUnit 4.11 аннотировать методы, которые возвращают Rule
с @Rule
или же @ClassRule
,