2011-06-27 14 views
6

jUnitプラグインでアクションクラスをテストしようとしています。私がテストクラッシュ、proxy.execute()を呼び出すと結果タイプがタイルの場合、ユニットテストが失敗する

@Action(value = "default", results = { 
    @Result(name = "success", type="tiles", location = "login") }) 
public String defaultAction() { 
    return SUCCESS; 
} 

:アクションは、次のようになります。私はおそらく タイルでテストを実行する何かを忘れているが、私はそれが何であるかについての手掛かりがありません。 私は次のスタックトレースを取得:私は以下のように動作を変更する場合

java.lang.NullPointerException 
at org.apache.struts2.views.tiles.TilesResult.doExecute(TilesResult.java:105) 
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186) 
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:373) 
... 

を、テストが正常に実行されます。proxy.setExecuteResult(false)

@Action(value = "default", results = { 
    @Result(name = "success", type="redirectAction", location = "login") }) 
public String defaultAction() { 
    return SUCCESS; 
} 
+0

TilesResultの105行目を見てみると、そこにNPEがどのような原因になるのかを知ることができます。 –

+0

'TilesContainerコンテナ= TilesAccess.getContainer(servletContext); ... container.render(location、request、response); '' container'はnullです。しかし、私は理由を知らない。 – Hayk

答えて

8

proxy.execute()前に、executeResultfalse値を設定する必要があります。

+0

"[npe-in​​-strutstestcase-after-enabling-tiles](http://stackoverflow.com/questions/5823709/npe-in​​-strutstestcase-after-enabling-tiles#9062291)"の回答は、ジュニットとタイルはNPEを抜けて行く – rveach

関連する問題