On Wed, 2006-08-02 at 10:30 +0300, Ittay Dror wrote:
> Hi,
> 
> What frameworks are suitable for automatic testing of wicket applications? 
> I'm interested in functional, regression and performance tests.

We use wickettester (or something similar) for unit testing the models
and listener methods. Then we use Selenium to do functional testing
using a real browser. Selenium can be used in two different ways.

1. "FIT-like" html tables to drive testing
2. JUnit like test cases (selenium remote control)

Our experience is that html table is good when tests are made by QA
person who can't program, but in a big project the tests done this way
get really quickly out of date. That's why we prefer to drive tests with
JUnit.

Wicket bench provides an integration to selenium
(http://www.laughingpanda.org/mediawiki/index.php/Launchers). Btw. This
is in no way tied to eclipse and allows the tests to be run from
command-line too (thus enabling to run the tests using your favorite
continuous integration tool).

> Is it tricky because of wicket's on-the-fly id generation?

A bit yes, for instance see this test (taken from
http://svn.sourceforge.net/viewvc/thinglink/trunk/thinglink/src/test/java/org/thinglink/ui_selenium/CreateThinglinkTest.java?revision=1&view=markup)

        public void testCreateThinglink() {
            openSelenium(createFactory());
            getSelenium().type("title", "My thing");
            getSelenium().type("description", "My thing is ");
            
assertTrue(getSelenium().isElementPresent("bench_component_form_newLink"));
            getSelenium().click("save");
            String text = getText();
            assertTrue(text.contains("My thing"));
        }     

The line
assertTrue(getSelenium().isElementPresent("bench_component_form_newLink")); is 
very sensitive to the way how Wicket generates ids. For instance, our tests all 
broke when wicket started to use '_'-char as separator. We have on a roadmap to 
provide a thin wicket specific support layer on top of selenium where we could 
write the same line as:
assertTrue(getSelenium().isElementPresent("form.newLink"));

For performance testing I recommend Grinder 3
(http://grinder.sourceforge.net). It is programmers performance testing
tool and does not provide any fancy gui.

Joni


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to