我编写了一个实用程序类,该实用程序类从带注释的模型生成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应用程序?
最佳答案
Wicket组件通常需要绑定到当前线程的应用程序。看一下(Base)WicketTester内部的功能。能够创建WebMarkupContainer的最简单解决方案是实例化WicketTester-它负责后台初始化:
@Test
public void testWmc() throws Exception {
WicketTester tester = new WicketTester();
new WebMarkupContainer("id");
}
关于java - 如何创建Wicket MarkupContainer以在JUnit测试实用程序类中使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15022034/