Как проверить, что наблюдатель org.jboss.seam.postInitialization работает правильно - PullRequest
1 голос
/ 19 ноября 2009

Я создал компонент 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, поэтому, возможно, я делаю все совершенно неправильно. Пожалуйста, скажите мне, если есть лучший способ.

1 Ответ

0 голосов
/ 08 октября 2010

Может быть, вы уже решили свою проблему. Вы вызываете некоторые методы асинхронно во время выполнения install()? Это может случайно задержать завершение установки. Очень прагматичным, но не самым чистым решением является использование Thread.sleep(.) в вашем тестовом примере для ожидания завершения установки.

...