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 的方法。

您能否建议一种生成 MarkupContainer 实现以在 JUnit 测试中使用的方法,最好不必创建完整的 Web 应用程序?

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 回答