如何创建Wicket MarkupContainer以在JUnit中使用测试实用程序类?

时间:2013-02-22 10:31:03

标签: java junit wicket

我编写了一个实用程序类,它从带注释的模型生成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应用程序?

1 个答案:

答案 0 :(得分:0)

Wicket组件通常需要绑定到当前线程的应用程序。看看WicketTester在内部做什么(Base)。能够创建WebMarkupContainer的最简单的解决方案是实例化WicketTester - 它负责后台初始化:

@Test
public void testWmc() throws Exception {
    WicketTester tester = new WicketTester();
    new WebMarkupContainer("id");
}