1

私は自分の wicket-application のテストを書いています。これを行うには、Spring Bean をページに (アノテーションによって) 挿入する必要があります。次のコードを検討してください。

protected void setUp() {
  tester = new WicketTester();
  scanService = new ScanService();

  ApplicationContextMock appctx=new ApplicationContextMock();
  appctx.putBean("pxGenericService", new PxGenericServiceImpl());

  tester.getApplication().getComponentInstantiationListeners().add(new SpringComponentInjector(tester.getApplication(), appctx));
}

これは実際に機能しているようです (nullpointer はありません)。問題は、Bean がリソース (@Resource アノテーション付きの変数) を取得し、ページでテストを実行すると、このリソースが null (nullpointer 例外) であることが判明することです。この問題を解決するにはどうすればよいですか?

4

2 に答える 2

0

SpringComponentInjectorそれはサポートしていないと思います@Resource。サポートされている注釈は@SpringBeanとのみ@Injectです。参照AnnotProxyFieldValueFactory:

@Override
public boolean supportsField(final Field field)
{
    return field.isAnnotationPresent(SpringBean.class) || field.isAnnotationPresent(Inject.class);
}
于 2013-03-26T09:04:00.570 に答える
0

また、Bean が持つすべての依存関係のインスタンスをモック アプリケーション コンテキストに追加する必要があります。したがって、クラスのインスタンスをPxGenericServiceImpl使用して に追加しますappctx

于 2013-03-25T15:48:16.797 に答える