org.jboss.seat.postInitialization のオブザーバーが正しく動作することをテストする方法

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

質問

グローバル管理者権限を持つユーザーが少なくとも 1 人存在することを確認し、存在しない場合は作成する SEAM コンポーネントを作成しました。

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

   public boolean isInstalled() {
      ...
   }
}

次に、インストーラーが正しく動作するかテストする必要があります。isInstalled() が true を返すことを確認し、正しいユーザーとロールがデータベースに存在することを確認する必要があります。ただし、インストールが完了する前に SeamT​​est.ComponentTest.testComponents() が実行されています。ログを見ると、インストーラーからの最後のメッセージが 2 回目のテスト実行の途中に表示され、テストがランダムに失敗していることがわかります。

次の方法でインストーラーをテストしようとしています。

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

    ...
}

インストールの完了後にテストを開始するにはどうすればよいですか?

私は SEAM を初めて使用するので、完全に間違っているかもしれません。もっと良い方法があれば教えてください。

役に立ちましたか?

解決

たぶん、あなたはすでにあなたの問題を解決しました。あなたはinstall()の実行中に非同期でいくつかのメソッドを呼び出すのですか?これは、ランダムにインストールを完了が遅れる可能性があります。最もクリーンな非常に実用的な、まだありませんソリューションは、インストールが完了するのを待つために、あなたのテストケースにThread.sleep(.)を使用することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top