Я хочу написать JUnit @Rule (версия 4.10), чтобы настроить некоторые объекты (Entity Manager) и сделать их доступными в тесте, путем "впрыскивания" его в переменную.
Что-то вроде этого:
public class MyTestClass() {
@Rule
MyEntityManagerInjectRule = new MyEntityManagerInjectRule():
//MyEntityManagerInjectRule "inject" the entity manager
EntityManger em;
@Test...
}
Проблема в том, что я не знаю, как получить текущий экземпляр MyTestClass
в MyEntityManagerInjectRule (расширяет TestRule), потому что он имеет только один метод.
Statement apply(Statement base, Description description);
Внутри описания есть только класс MyTestClass, но не экземпляр, используемый для теста.
Альтернативой будет использование org.junit.rules.MethodRule, но это устарело. До и после недостаточно для этой задачи, потому что тогда мне нужно будет скопировать код в тесты, и они более или менее устарели. (См. Block4JClassRunner.withBefores/withAfters).
Итак, мой вопрос в том, как я могу получить доступ к экземпляру тестового класса без использования устаревшего материала.