В JUnit4 у меня был класс @ManagedBean, который расширил все мои интеграционные тесты, и шаблон для EJB был выполнен только один раз для всех тестов заранее с использованием @ClassRule (см. Ниже). Что я должен сделать, чтобы гарантировать, что метод before () будет запущен до всех других тестов теперь, когда @ClassRule ушел? В документах говорится, что необходимо создать расширение, но предполагается, что расширения не имеют состояния, что не позволяет мне получить доступ к переменным экземпляра, таким как context
.
@ManagedBean
public class EJBStuff {
public static Context context;
@ClassRule
public static final ExternalResource resource = new ExternalResource() {
@Override
protected void before() throws Exception {
if (context == null) {
final Properties p = new Properties();
context = EJBContainer.createEJBContainer(p).getContext();
}
}
}
Если я попытаюсь сделать расширение из этого кода, расширение BeforeAllCallback и при написании метода beforeAll я получаю эту ошибку в EJBContainer.createEJBContainer ():
org.apache.openejb.OpenEjbContainer$InvalidApplicationException:
org.apache.openejb.config.ValidationFailedException: Module failed validation. AppModule(name=)
Возможно ли то, что я пытаюсь сделать с помощью JUnit 5?