Как проверить, что наблюдатель org.jboss.seam.postInitialization работает правильно
-
21-09-2019 - |
Вопрос
Я создал компонент SEAM, который проверяет, существует ли хотя бы один пользователь с глобальными правами администратора, и создает его, если нет.
@Name("installer")
@Stateless
public class InstallerBean implements Installer, Serializable{
@Observer("org.jboss.seam.postInitialization")
public void install() {
...
}
public boolean isInstalled() {
...
}
}
Теперь мне нужно проверить, что установщик работает правильно.Мне нужно проверить, что IsInstalled() возвращает true, и убедиться, что в базе данных существуют правильные пользователи и роли.Однако SeamTest.ComponentTest.testComponents() запускается до завершения моей установки.Я вижу в журнале, что последние сообщения от моего установщика появляются в середине второго выполнения теста, поэтому мои тесты случайным образом завершаются неудачей.
Я пытаюсь протестировать свой установщик следующим образом:
public class InstallerTests extends SeamTest {
@Test
public void isInstalledTest() {
new ComponentTest() {
@Override
protected void testComponents() {
...
}
}
}
...
}
Как я могу запустить свой тест после завершения установки?
Я новичок в SEAM, так что, возможно, я все делаю совершенно неправильно.Пожалуйста, скажите мне, есть ли лучший способ.
Решение
Возможно, вы уже решили свою проблему.Вызываете ли вы некоторые методы асинхронно во время выполнения install()
?Это может привести к случайной задержке завершения установки.Очень прагматичным, но не самым чистым решением является использование Thread.sleep(.)
в вашем тестовом примере дождаться завершения установки.