If you use Test Driven Development in Wicket, the first approach is often to use component's path names (e.g., page:panel:form:component) to test them. This is good bearable at first, but as your pages get more and more complicated and have deeper hierarhices, you will find yourself spending a whole lot of time debugging typos and misconceptions (in my opinnion: you would waste 60% of your time doing this). The solution is: make your component hierarcy type-safe so that you can GET all of your components when testing:
...
Code Block |
---|
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.sourceforge.net"> <head> <title>Wicket Quickstart Archetype Homepage</title> </head> <body> <strong>Wicket Quickstart Archetype Homepage</strong> <br/><br/> <span wicket:id="message">message will be here</span> <form wicket:id="form"> <table border="1"> <tr wicket:id="book_list"> <th>Name:</th><td><input type="text" wicket:id="name"/></td> <th>Author:</th><td><input type="text" wicket:id="author"/></td> <th>Type:</th><td><select wicket:id="type"></select></td> </tr> </table> <input type="submit" wicket:id="submit" value="Submit"/> </form> </body> </html> |
The benefits of the introduced approach are:
- Compile-time type-safety
- By not hardcoding the runtime component paths into the tests, you can make your tests truly modular!
- You save 60% of your time (the time you would have wasted banging your head to the wall of wrong paths and components)
- The code is cleaner and nicer