Как проверить, что наблюдатель org.jboss.seam.postInitialization работает правильно

StackOverflow https://stackoverflow.com/questions/1762014

Вопрос

Я создал компонент 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(.) в вашем тестовом примере дождаться завершения установки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top