2009-11-19 1 views
1

Я создал компонент SEAM, который проверяет, существует ли хотя бы один пользователь с глобальными правами администратора и создает его, если нет.Как проверить, что наблюдатель org.jboss.seam.postInitialization работает правильно

@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() { 
       ... 
      } 
     } 
    } 

    ... 
} 

Как я могу сделать мой тестовый запуск после моей установки compleated?

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

ответ

0

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

+0

эта проблема не была решена главным образом потому, что мы решили удалить компонент-установщик из проекта и использовать файл import.sql для инициализации базы данных. Решение с помощью Tread.sleep() должно работать, но я не могу попробовать его сейчас. – VestniK

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