使用构造函数参数测试Wicket面板
我得到了一个包含多个面板的页面,这些面板的构造函数中包含多个参数。 其中之一是一个菜单,它为菜单中的不同按钮提供一个列表 我尝试将其作为测试,但得到一个空指针异常。在虚拟页面上创建面板是可行的。 我对这种方法并不完全满意,因为它在我的测试中引入了很多新代码,并增加了出错的可能性 有没有更好的方法来测试在构造函数中接受参数的面板使用构造函数参数测试Wicket面板,wicket,wicket-tester,Wicket,Wicket Tester,我得到了一个包含多个面板的页面,这些面板的构造函数中包含多个参数。 其中之一是一个菜单,它为菜单中的不同按钮提供一个列表 我尝试将其作为测试,但得到一个空指针异常。在虚拟页面上创建面板是可行的。 我对这种方法并不完全满意,因为它在我的测试中引入了很多新代码,并增加了出错的可能性 有没有更好的方法来测试在构造函数中接受参数的面板 当然可以: 给出空指针错误的代码: public void testVisitPanel(){ VisitPanel v = new VisitPanel("v
当然可以: 给出空指针错误的代码:
public void testVisitPanel(){
VisitPanel v = new VisitPanel("visitPanel");
tester.startComponent(v);
tester.assertContains("DATE");
}
专家组
public VisitPanel(String id) {
super(id);
add( new Label("visitDate", "DATE"));
add( new Label("visitStage", "VISIT SIGNED"));
}
还有html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:wicket="http://wicket.sourceforge.net/"
xml:lang="en"
lang="en">
<wicket:head>
</wicket:head>
<body>
<wicket:panel>
<span wicket:id="visitDate">VISIT DATE</span>
<span wicket:id="visitStage">STAGE</span>
</wicket:panel>
</body>
</html>
访问日期
阶段
如果您使用的是Wicket 1.4,您可能需要wicketTester.startPanel
我要做的是在测试中创建ITestPanelSource
的实现,执行如下操作:
private class TestPanelSource implements ITestPanelSource {
private static final long serialVersionUID = 1L;
public Panel getTestPanel(String panelId) {
return new MyPanel(panelId, myArg1, myArg2);
}
}
使用myArgN
作为测试类(经常是模拟)中适合构造函数的字段,然后在测试或setUp
方法中使用
wicketTester.startPanel(new TestPanelSource());
这基本上是为您完成一些DummyPage工作,因此可能与您现在所做的工作相差不远,但至少可以节省测试基础架构中虚拟页面的实现
在Wicket 1.5中,为了支持您在问题中引用的组件测试,这是不推荐的。这也应该行得通,所以可能值得发布一些实际的代码,这些代码会给您的技术带来麻烦。谢谢!使用组件测试工作。然而,一些面板给了我一个空指针异常。稍微测试一下,我的面板使用只有Id的默认构造函数作为参数,这似乎不适用于组件测试。不过,使用startPanel确实有效(startPanel(Panel.class))。所以把这两者混合在一起,我就可以测试我所有的面板了。我很高兴这很有帮助。如果您在进行组件测试时发布一个给出空指针的示例代码,也许我们可以提供更多帮助。在问题中发布代码,因为我无法将其放在注释中。