JUnit5: как выполнить инициализацию EJB перед всеми остальными тестами? - PullRequest
0 голосов
/ 06 марта 2020

В 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?

...