4. WICKETTESTER
• Test components directly, or their markup
• Runs tests without starting server
• Ajax testing (server side)
• Runs in IDE, ant, maven builds
• Achieves high code coverage
11. LINK TEST
@Test
public void countingLinkClickTest() {
WicketTester tester = new WicketTester();
tester.startPage(LinkCounter.class);
}
12. LINK TEST
@Test
public void countingLinkClickTest() {
WicketTester tester = new WicketTester();
tester.startPage(LinkCounter.class);
tester.assertModelValue(quot;labelquot;, 0);
}
13. LINK TEST
@Test
public void countingLinkClickTest() {
WicketTester tester = new WicketTester();
tester.startPage(LinkCounter.class);
tester.assertModelValue(quot;labelquot;, 0);
tester.clickLink(quot;linkquot;);
}
14. LINK TEST
@Test
public void countingLinkClickTest() {
WicketTester tester = new WicketTester();
tester.startPage(LinkCounter.class);
tester.assertModelValue(quot;labelquot;, 0);
tester.clickLink(quot;linkquot;);
tester.assertModelValue(quot;labelquot;, 1);
}
20. PAGES IN EDUARTE
• Pages must have @PageInfo annotation
• Policy file must contain existing pages
• All secure pages must be in the policy file
21. PAGE INFO ANNOTATION
@PageInfo(
title = quot;Intake stap 1 van 4quot;,
menu = {quot;Deelnemer > intakequot;}
)
public class IntakePersonalia extends IntakeWizardPage
{
...
}
25. WICKET SERIALIZABLE
CHECKER
• Runs when page is serialized
• Tries to find non-serializable objects attached to page
• Helpful stacktraces
26. EXAMPLE STACKTRACE
Unable to serialize class: nl.topicus.project.entities.personen.Persoon
Field hierarchy is:
2 [class=nl.topicus.project.SomePage, path=2]
nl.topicus.project.entities.personen.Persoon
nl.topicus.project.SomePage.persoon <----- Entity
27. WICKET SERIALIZER CHECK
public class TopicusRequestCycle extends WebRequestCycle {
public void onEndRequest() {
Page requestPage = getRequest().getPage();
testDetachedObjects(requestPage);
if (getRequestTarget() instanceof IPageRequestTarget) {
Page responsePage = getRequestTarget().getPage();
if (responsePage != requestPage) {
testDetachedObjects(responsePage);
}
}
}
}
37. ADD FILTER TO WEBAPP
public class MyApplication extends WebApplication {
// ...
@Override
protected void init() {
// only enable the markup filter in DEVELOPMENT mode
if(DEVELOPMENT.equals(getConfigurationType())) {
getRequestCycleSettings()
.addResponseFilter(new HtmlValidationResponseFilter());
}
}
}
38. DEFINE PROPER DOCTYPE
<!DOCTYPE html PUBLIC quot;-//W3C//DTD XHTML 1.0 Transitional//EN
quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdquot;>
<html xmlns=quot;http://www.w3.org/1999/xhtmlquot;>
<head>
<title>Foo</title>
</head>
<body>
</body>
</html>