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

10-10 09:50