Почему аннотированные поля @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,

Другие вопросы по тегам