我编写了一个实用程序类,它从带注释的模型生成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应用程序?
答案 0 :(得分:0)
Wicket组件通常需要绑定到当前线程的应用程序。看看WicketTester在内部做什么(Base)。能够创建WebMarkupContainer的最简单的解决方案是实例化WicketTester - 它负责后台初始化:
@Test
public void testWmc() throws Exception {
WicketTester tester = new WicketTester();
new WebMarkupContainer("id");
}