【问题标题】:Unit test fail when result type is tile结果类型为平铺时单元测试失败
【发布时间】:2011-06-27 12:55:19
【问题描述】:

我正在尝试使用 jUnit 插件测试我的操作类。动作如下所示:

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

当我拨打proxy.execute() 时,测试崩溃。我可能忘记了 使我的测试与瓷砖一起运行的东西,但我不知道那可能是什么。 我得到以下堆栈跟踪:

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)
...

当我改变如下动作时,测试正常执行:

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

【问题讨论】:

  • 您可以尝试查看 TilesResult 中的第 105 行,看看是什么导致了 NPE。
  • TilesContainer container = TilesAccess.getContainer(servletContext); ... container.render(location, request, response); container 为空。但我不知道为什么。

标签: unit-testing junit struts2 tiles


【解决方案1】:

proxy.execute() 之前,executeResult 应设置为false 值:proxy.setExecuteResult(false)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-11-19
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
  • 1970-01-01
  • 2023-03-06
  • 2021-10-16
  • 1970-01-01
相关资源
最近更新 更多