1

アノテーション付きモデルから Wicket コンポーネントを生成し、メソッド パラメーターとして渡される MarkupContainer に追加するユーティリティ クラスを作成しました。

このジェネレーターの単体テストには、MarkupContainer が必要です。私はこのようにしてみました:

final MarkupContainer container =
    new MarkupContainer("container") {
        private static final long serialVersionUID = 1L;
    };

これはコンパイルされますが、テストを実行すると次の例外がスローされます。

org.apache.wicket.WicketRuntimeException:
    There is no application attached to current thread main

そのため、MarkupContainer コンテナーには、コンストラクター パラメーターとして定義されていない環境内の追加のオブジェクトが必要です。ドキュメントから、それらが何であるかを理解できません。

WicketTester を調べましたが、MarkupContainer を生成する方法が見つかりませんでした。

できれば完全な Web アプリケーションを作成することなく、JUnit テストで使用する MarkupContainer 実装を生成する方法を提案できますか?

4

1 に答える 1

0

通常、Wicket コンポーネントには、現在のスレッドにバインドされたアプリケーションが必要です。(Base)WicketTester が内部で行っていることを見てみましょう。WebMarkupContainer を作成できる最も簡単な解決策は、WicketTester をインスタンス化することです。バックグラウンドの初期化を処理します。

@Test
public void testWmc() throws Exception {
    WicketTester tester = new WicketTester();
    new WebMarkupContainer("id");
}
于 2013-02-22T11:14:33.667 に答える