使用Wicket在单元测试中模拟后退/前进/刷新按钮

时间:2010-02-26 18:30:52

标签: unit-testing wicket

我想在单击浏览器的后退按钮(或转发或刷新)时对我的页面的行为进行单元测试(jUnit 4)。

我可以在单元测试中以某种方式模拟浏览器的后退/前进/刷新按钮吗? 是否有提供此类功能的实用程序类?

第二次编辑:

据我所知,Wicket测试工具不会模拟具有完整历史记录的浏览器。根据我的理解,我需要以下两件事来模拟浏览器在单元测试中的行为:

(1)当我致电WicketTester.startPage()WicketTester.clickLink()时,Wicket必须告诉我确切的请求(例如网址)。

(2)Wicket必须再次处理相同的请求,例如通过接受先前由(1)记录的URL。

我希望以与WicketTesterFormTester等兼容的方式执行此操作,因为我在这些类中使用了组件查找器,断言和更好的功能。这意味着我必须从Wicket设施发出请求,而不是从HttpUnit / HtmlUnit / Selenium等外部客户端发出请求。

3 个答案:

答案 0 :(得分:1)

WicketTester当然不支持这一点,它明确使用虚拟WebApplication不支持后退按钮来节省资源。

我怀疑在Wicket中模拟会很痛苦......

您最好的选择可能是使用基于浏览器的测试工具,例如Selenium RC。我自己没有尝试过,但它有一个goBack()方法,可以模拟浏览器后退按钮上的点击。

答案 1 :(得分:1)

结帐HtmlUnit,您可以使用History课程模仿后退和转发事件。

@Test
public void testHistory() throws IOException {
    // Create a web client
    final WebClient webClient = new WebClient();

    // Surf to a page
    final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net/");

    // Click "Get started" link
    page.getAnchorByHref("gettingStarted.html").click();

    // Get History
    History history = webClient.getCurrentWindow().getHistory();

    // Current page
    assertEquals("http://htmlunit.sourceforge.net/gettingStarted.html",
                 history.getUrl(history.getIndex()).toString());

    // Go back one page
    history.back();
    assertEquals("http://htmlunit.sourceforge.net/",
                 history.getUrl(history.getIndex()).toString());
}

答案 2 :(得分:0)

你无法在wicket单元测试中模拟“后退”功能,它完全超出了wicket所做的范围,但是你可以测试几乎任何在你点击后发生的事情

发布一些更具体的关于你要测试的内容,通常一个后退按钮会在wicket中给你一堆“独立”组件,你可以测试那些