2016-04-20 5 views
2

Я пишу интеграционные тесты для сервлета Java EE с использованием Arquillian + JUnit. Мне нужно выполнить код перед запуском сервера.Запустить код перед развертыванием arquillian

Так можно ли выполнить код до @Deployment? Я попробовал @BeforeClass без везения.

Причина, по которой мне нужно это сделать, заключается в том, что доверие и хранилища ключей для ssl должно существовать до запуска сервера. Я создаю магазины проблематично и впоследствии сохраняю их в файлах.

Я знаю, что возможное обходное решение будет состоять из статического доверия и хранилищ ключей, но я предпочитаю их создавать программно, прежде чем тест начнется с полной гибкостью при написании тестов.

+0

Любая удача с попыткой моего предлагаемого подхода? –

ответ

0

У вас есть два других варианта перед выполнением коды и после теста:

  • правил или ClassRules исполняются вокруг и до/после
  • Использования пользовательских TestRunner (простирающийся по умолчанию бегуна «Arquillian»)

Но поскольку статический метод развертывания не вызывается правилом, я предполагаю, что вам нужно пойти на тест-студент.

2

На самом деле нет необходимости иметь специальную специализацию для бегуна Arquillian JUnit. Это решение было бы только для JUnit 4.x в том случае, который вы используете для написания тестов.

Arquillian позволяет подключить механизм расширений к его времени выполнения, и таким образом вы можете выполнить некоторую пользовательскую логику перед запуском сервера, чтобы предоставить свои хранилища ключей. Я считаю, что это более элегантное и портативное решение.

Пожалуйста, обратите внимание на sample extensions on Github (особенно lifecycle будет хорошей отправной точкой). Если вы чувствуете, что реализуете его таким образом, я более чем счастлив помочь вам. Событие, которое вы, возможно, захотите наблюдать, это либо BeforeSetup, либо BeforeStart.

Смежные вопросы