J'ai créé un composant SEAM qui vérifie qu'au moins un utilisateur disposant de droits d'administration globaux existe et en crée un si non.Comment tester cet observateur de org.jboss.seam.postInitialization fonctionne correctement
@Name("installer")
@Stateless
public class InstallerBean implements Installer, Serializable{
@Observer("org.jboss.seam.postInitialization")
public void install() {
...
}
public boolean isInstalled() {
...
}
}
Maintenant, j'ai besoin de tester que l'installateur fonctionne correctement. J'ai besoin de vérifier que isInstalled() renvoie true et vérifie que les utilisateurs et les rôles corrects existent dans la base de données. Cependant, SeamTest.ComponentTest.testComponents() est en cours d'exécution avant la fin de l'installation. Je peux voir dans le journal que les derniers messages de mon installateur apparaissent au milieu de l'exécution du deuxième test, mes tests échouent donc de manière aléatoire.
Je suis en train de tester mon installateur de la manière suivante:
public class InstallerTests extends SeamTest {
@Test
public void isInstalledTest() {
new ComponentTest() {
@Override
protected void testComponents() {
...
}
}
}
...
}
Comment puis-je faire mon départ de test après mon installation acheva? Je suis nouveau à SEAM alors peut-être que je fais tout faux complétement. S'il vous plaît dites-moi s'il y a un meilleur moyen.
Ce problème n'a pas été résolu principalement parce que nous avons décidé de supprimer le composant d'installation du projet et d'utiliser le fichier import.sql pour l'initialisation de la base de données. La solution avec Tread.sleep() devrait fonctionner mais je ne peux pas l'essayer maintenant. – VestniK