org.jboss.seat.postInitialization のオブザーバーが正しく動作することをテストする方法
-
21-09-2019 - |
質問
グローバル管理者権限を持つユーザーが少なくとも 1 人存在することを確認し、存在しない場合は作成する SEAM コンポーネントを作成しました。
@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() が実行されています。ログを見ると、インストーラーからの最後のメッセージが 2 回目のテスト実行の途中に表示され、テストがランダムに失敗していることがわかります。
次の方法でインストーラーをテストしようとしています。
public class InstallerTests extends SeamTest {
@Test
public void isInstalledTest() {
new ComponentTest() {
@Override
protected void testComponents() {
...
}
}
}
...
}
インストールの完了後にテストを開始するにはどうすればよいですか?
私は SEAM を初めて使用するので、完全に間違っているかもしれません。もっと良い方法があれば教えてください。
解決
たぶん、あなたはすでにあなたの問題を解決しました。あなたはinstall()
の実行中に非同期でいくつかのメソッドを呼び出すのですか?これは、ランダムにインストールを完了が遅れる可能性があります。最もクリーンな非常に実用的な、まだありませんソリューションは、インストールが完了するのを待つために、あなたのテストケースにThread.sleep(.)
を使用することです。
所属していません StackOverflow