Como testar esse observador de org.jboss.seam.postinitialization funciona corretamente
-
21-09-2019 - |
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.
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.