私は Wicket を使い始め、依存性注入フレームワークとしてGuiceを選択しました。今、WebPage オブジェクトの単体テストを作成する方法を学ぼうとしています。
少しグーグルで検索したところ、この投稿を見つけましたが、AtUnit について言及していたので、試してみることにしました。
私の WebPage クラスは次のようになります
public class MyWebPage extends WebPage
{
@Inject MyService service;
public MyWebPage()
{
//here I build my components and use injected object.
service.get(id);
....
}
}
プロダクションの MyServiceImpl をそれに置き換えるモックを作成しましたが、Guice と AtUnit がそれを注入する必要があると思います。
問題は次のとおりです。
AtUnit は、ターゲット オブジェクトを @Unit でマークすることを期待しています。これは、作成済みのオブジェクトを WicketTester に渡すことができるため、問題ありません。
@Unit MyWebPage page = new MyWebPage(); wicketTester.startPage(page);
しかし、通常はクラス名で startPage を呼び出します。
AtUnit は、ターゲット オブジェクトが @Inject を使用して市場に出されていることも期待しているため、AtUnit はそれを作成および管理できますが、org.apache.wicket.WicketRuntimeException: There is no application attached to current thread main が発生します。AtUnit に wicketTester からのアプリケーションを使用するように指示できますか?
- 私は MyWebPage で @Inject を使用していないため (私が思うに)、Guice によって注入されるべきすべてのオブジェクトは null です (私の例では、サービス参照は null です)。
Wicket 環境内の AtUnit については本当に何も見つかりません。私は何か間違ったことをしていますか、何かが欠けていますか?