Pergunta

Criei o componente de costura que verifica se pelo menos um usuário com direitos globais de administrador existe e cria um, se não.

@Name("installer")
@Stateless
public class InstallerBean implements Installer, Serializable{
   @Observer("org.jboss.seam.postInitialization")
   public void install() {
      ...
   }

   public boolean isInstalled() {
      ...
   }
}

Agora eu preciso testar que o instalador funciona corretamente. Preciso verificar se o ISInstalled () retorna true e existe usuários e funções corretos no banco de dados. No entanto, Seamtest.componentTest.testComponents () está sendo executado antes que minha instalação se complique. Eu posso ver no log que as últimas mensagens do meu instalador aparecem no meio da execução do segundo teste, para que meus testes falhem aleatoriamente.

Estou tentando testar meu instalador da seguinte maneira:

public class InstallerTests extends SeamTest {
    @Test
    public void isInstalledTest() {
        new ComponentTest() {
            @Override
            protected void testComponents() {
               ...
            }
        }
    }

    ...
}

Como posso tornar meu teste a partir da minha instalação complicada?

Eu sou novo na costura, então talvez eu esteja fazendo tudo complicado. Por favor, diga -me se existe uma maneira melhor.

Foi útil?

Solução

Talvez você já tenha resolvido seu problema. Você chama alguns métodos de forma assíncrona durante a execução de install()? Isso pode atrasar aleatoriamente a conclusão da instalação. Uma solução muito pragmática, mas não mais limpa, é usar Thread.sleep(.) No seu caso de teste, aguarde a conclusão da instalação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top