Wie zu testen, dass die Beobachter von org.jboss.seam.postInitialization korrekt funktioniert

StackOverflow https://stackoverflow.com/questions/1762014

Frage

Ich habe SEAM Komponente erstellt, die überprüft, dass mindestens ein Benutzer mit globalen Admin-Rechte vorhanden ist und erstellt eine, wenn nicht.

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

   public boolean isInstalled() {
      ...
   }
}

Jetzt muss ich testen, ob Installateur richtig funktioniert. Ich muss überprüfen, ob IsInstalled () gibt true zurück, und prüfen Sie, dass die korrekte Benutzer und Rollen vorhanden sind in der Datenbank. Allerdings SeamTest.ComponentTest.testComponents () ausgeführt wird, bevor meine Installation Komplettrad. Ich kann im Protokoll sehen, dass im letzten Nachricht von meinem Installateur in der Mitte des zweiten Testausführung erscheint so meine Tests nicht zufällig.

Ich versuche, meinen Installer in der folgenden Art und Weise zu testen:

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

    ...
}

Wie kann ich meinen Test mache beginnend nach meiner Installation compleated?

Ich bin neu so SEAM vielleicht alle compleately mache ich falsch. Bitte sagen Sie mir, ob es einen besseren Weg gibt.

War es hilfreich?

Lösung

Vielleicht gelöst Sie bereits Sie Problem. Haben Sie einige Methoden, die während der Ausführung von install() asynchron aufrufen? Dies könnte zufällig verzögern die Installation abgeschlossen ist. Ein sehr pragmatisch noch nicht die saubere Lösung ist Thread.sleep(.) in Ihrem Testfall zu verwenden, um die Installation abzuschließen, zu warten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top