В JUnit 4.10 и ниже можно аннотировать правило как и @Rule, так и @ClassRule. Это означает, что правило вызывается перед классом до/после класса и до/после каждого теста. Одна из возможных причин для этого - установить дорогостоящий внешний ресурс (через вызовы @ClassRule), а затем дешево reset он (через вызовы @Rule).
Как и в случае JUnit 4.11, поля @Rule должны быть нестатическими, а поля @ClassRule должны быть статическими, поэтому выше это невозможно.
Есть очевидные обходные пути (например, явно разделять обязанности @ClassRule и @Rule на отдельные правила), но, похоже, стыдно иметь мандат на использование двух правил. Я кратко рассмотрел использование @Rule и вывод о том, является ли это первым/последним тестом, но я не считаю, что информация доступна (по крайней мере, она не доступна непосредственно в описании).
Есть ли опрятный и аккуратный способ комбинирования функций @ClassRule и @Rule в одном правиле в JUnit 4.11?
Спасибо, Роуэн