1

グローバル管理者権限を持つユーザーが少なくとも1人存在することを確認し、存在しない場合は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を初めて使用するので、すべてを完全に間違っているのかもしれません。もっと良い方法があれば教えてください。

4

1 に答える 1

0

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

于 2010-10-08T13:42:11.720 に答える