|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.wicket.util.tester.BaseWicketTester
org.apache.wicket.util.tester.WicketTester
public class WicketTester
A helper class to ease unit testing of Wicket applications without the need for a servlet
container. To start a test, either use startPage or startPanel:
// production page
public class MyPage extends WebPage
{
public MyPage()
{
add(new Label("myMessage", "Hello!"));
add(new Link("toYourPage")
{
public void onClick()
{
setResponsePage(new YourPage("Hi!"));
}
});
}
}
// test code
private WicketTester tester;
public void setUp()
{
tester = new WicketTester();
}
public void testRenderMyPage()
{
// start and render the test page
tester.startPage(MyPage.class);
// assert rendered page class
tester.assertRenderedPage(MyPage.class);
// assert rendered label component
tester.assertLabel("myMessage", "Hello!");
}
The above example is straight forward: start MyPage.class and assert
Label it rendered. Next, we try to navigate through a Link:
// production page
public class YourPage extends WebPage
{
public YourPage(String message)
{
add(new Label("yourMessage", message));
info("Wicket Rocks ;-)");
}
}
// test code
public void testLinkToYourPage()
{
tester.startPage(MyPage.class);
// click link and render
tester.clickLink("toYourPage");
tester.assertRenderedPage(YourPage.class);
tester.assertLabel("yourMessage", "Hi!");
}
tester.clickLink(path); will simulate user click on the component (in this case,
it's a Link) and render the response page YourPage. Ok, unit test of
MyPage is completed. Now we test YourPage standalone:
// test code
public void testRenderYourPage()
{
// provide page instance source for WicketTester
tester.startPage(new TestPageSource()
{
public Page getTestPage()
{
return new YourPage("mock message");
}
});
tester.assertRenderedPage(YourPage.class);
tester.assertLabel("yourMessage", "mock message");
// assert feedback messages in INFO Level
tester.assertInfoMessages(new String[] { "Wicket Rocks ;-)" });
}
Instead of tester.startPage(pageClass), we define a
ITestPageSource to provide testing page instance for
WicketTester. This is necessary because YourPage uses a custom
constructor, which is very common for transferring model data, but cannot be instantiated by
reflection. Finally, we use assertInfoMessages to assert there is a feedback message
"Wicket Rocks ;-)" at the INFO level.
Many methods require a 'path' parameter. E.g. the page relative path can be obtained via
Component.getPageRelativePath(). Since each Component has an ID/name, any Component can
also be referenced by its ID MarkupContainer.get(String). And since MarkupContainer's and
its subclasses are containers which allow to add Components (in sync with the markup hierarchy),
you may not only access direct childs but also subchilds like get("myPanel:myForm:myNameField")
separating each ID with a ':'.
TODO General: Example usage of FormTester
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class org.apache.wicket.util.tester.BaseWicketTester |
|---|
BaseWicketTester.StartComponentInPage |
| Constructor Summary | |
|---|---|
WicketTester()
Creates a WicketTester and automatically creates a WebApplication,
but the tester will have no home page. |
|
WicketTester(Class<? extends Page> homePage)
Creates a WicketTester and automatically creates a WebApplication. |
|
WicketTester(WebApplication application)
Creates a WicketTester. |
|
WicketTester(WebApplication application,
javax.servlet.ServletContext servletCtx)
Creates a WicketTester to help unit testing. |
|
WicketTester(WebApplication application,
String path)
Creates a WicketTester to help unit testing. |
|
| Method Summary | ||
|---|---|---|
void |
assertAjaxLocation()
Asserts that the Ajax location header is present. |
|
void |
assertBookmarkablePageLink(String id,
Class<? extends WebPage> pageClass,
PageParameters parameters)
Asserts that that the BookmarkablePageLink |
|
void |
assertComponent(String path,
Class<? extends Component> expectedComponentClass)
Asserts a Component class. |
|
void |
assertComponentOnAjaxResponse(Component component)
Tests that a Component has been added to a AjaxRequestTarget, using
AjaxRequestTarget.add(Component...). |
|
void |
assertComponentOnAjaxResponse(String componentPath)
Tests that a Component has been added to a AjaxRequestTarget, using
AjaxRequestTarget.add(Component...). |
|
void |
assertContains(String pattern)
Asserts the content of last rendered page contains (matches) a given regex pattern. |
|
void |
assertContainsNot(String pattern)
The opposite of assertContains(String). |
|
void |
assertDisabled(String path)
assert component is enabled. |
|
void |
assertEnabled(String path)
assert component is enabled. |
|
void |
assertErrorMessages(String... expectedErrorMessages)
Asserts error-level feedback messages. |
|
void |
assertFeedback(String path,
String... messages)
Assert that a particular feedback panel is rendering certain messages. |
|
void |
assertInfoMessages(String... expectedInfoMessages)
Assert info-level feedback messages. |
|
void |
assertInvisible(String path)
Asserts that a Component is invisible. |
|
void |
assertLabel(String path,
String expectedLabelText)
Asserts the text of a Label Component. |
|
void |
assertListView(String path,
List<?> expectedList)
Asserts the model of a ListView. |
|
void |
assertModelValue(String path,
Object expectedValue)
Asserts the model value of a component. |
|
void |
assertNoErrorMessage()
Asserts no error-level feedback messages. |
|
void |
assertNoInfoMessage()
Asserts no info-level feedback messages. |
|
void |
assertRedirectUrl(String expectedRedirectUrl)
Assert that the last request redirected to the given Url. |
|
void |
assertRenderedPage(Class<? extends Page> expectedRenderedPageClass)
Asserts a last-rendered Page class. |
|
void |
assertRequired(String path)
assert form component is required. |
|
void |
assertResultPage(Class<?> clazz,
String filename)
Asserts last-rendered Page against an expected HTML document. |
|
void |
assertResultPage(String expectedDocument)
Asserts last-rendered Page against an expected HTML document as a
String |
|
void |
assertUsability(Component component)
Checks whether a component is visible and/or enabled before usage |
|
void |
assertVisible(String path)
Asserts that a Component is visible. |
|
void |
clickLink(Component link)
|
|
void |
executeBehavior(Class<?> testClass,
AbstractAjaxBehavior behavior,
String filename)
|
|
void |
executeListener(Class<?> testClass,
Component component,
String filename)
|
|
|
executeTest(Class<?> testClass,
Class<T> pageClass,
PageParameters parameters,
String filename)
Use -Dwicket.replace.expected.results=true to automatically replace the expected
output file. |
|
|
executeTest(Class<?> testClass,
Class<T> pageClass,
String filename)
Use -Dwicket.replace.expected.results=true to automatically replace the expected
output file. |
|
void |
executeTest(Class<?> testClass,
Component component,
String filename)
Use -Dwicket.replace.expected.results=true to automatically replace the expected
output file. |
|
void |
executeTest(Class<?> testClass,
Page page,
String filename)
Use -Dwicket.replace.expected.results=true to automatically replace the expected
output file. |
|
static String |
getBasedir()
Returns the current Maven build directory taken from the basedir system property, or null if not set |
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public WicketTester()
WicketTester and automatically creates a WebApplication,
but the tester will have no home page.
public WicketTester(Class<? extends Page> homePage)
WicketTester and automatically creates a WebApplication.
homePage - a home page Classpublic WicketTester(WebApplication application)
WicketTester.
application - a WicketTester WebApplication object
public WicketTester(WebApplication application,
String path)
WicketTester to help unit testing.
application - a WicketTester WebApplication objectpath - the absolute path on disk to the web application's contents (e.g. war root) - may
be nullMockApplication.MockApplication()
public WicketTester(WebApplication application,
javax.servlet.ServletContext servletCtx)
WicketTester to help unit testing.
application - a WicketTester WebApplication objectservletCtx - the servlet context used as backend| Method Detail |
|---|
public void assertAjaxLocation()
public void assertComponent(String path,
Class<? extends Component> expectedComponentClass)
Component class.
path - path to ComponentexpectedComponentClass - expected Component classpublic void assertComponentOnAjaxResponse(Component component)
Component has been added to a AjaxRequestTarget, using
AjaxRequestTarget.add(Component...). This method actually tests that a
Component is on the Ajax response sent back to the client.
PLEASE NOTE! This method doesn't actually insert the Component in the client DOM
tree, using JavaScript. But it shouldn't be needed because you just have to trust that Wicket
Ajax JavaScript works.
component - a Component to be testedpublic void assertComponentOnAjaxResponse(String componentPath)
Component has been added to a AjaxRequestTarget, using
AjaxRequestTarget.add(Component...). This method actually tests that a
Component is on the Ajax response sent back to the client.
PLEASE NOTE! This method doesn't actually insert the Component in the client DOM
tree, using JavaScript. But it shouldn't be needed because you just have to trust that Wicket
Ajax JavaScript works.
componentPath - a Component path to testpublic void assertContains(String pattern)
pattern - a reqex pattern to matchpublic void assertContainsNot(String pattern)
assertContains(String).
pattern - patternpublic void assertErrorMessages(String... expectedErrorMessages)
expectedErrorMessages - expected error messagespublic void assertInfoMessages(String... expectedInfoMessages)
expectedInfoMessages - expected info messages
public void assertFeedback(String path,
String... messages)
FeedbackPanel, so it will
not work with custom IFeedback implementations unless you are subclassing
FeedbackPanel
path - path to the feedback panelmessages - messages expected to be renderedpublic void assertInvisible(String path)
Component is invisible.
path - path to Component
public void assertLabel(String path,
String expectedLabelText)
Label Component.
path - path to Label ComponentexpectedLabelText - expected text of the Label
public void assertModelValue(String path,
Object expectedValue)
path - path to the component on the pageexpectedValue - expected value of the component's model
public void assertListView(String path,
List<?> expectedList)
ListView.
assertListView in class BaseWicketTesterpath - path to a ListView ComponentexpectedList - expected List in the model of the given ListViewpublic void assertNoErrorMessage()
public void assertNoInfoMessage()
public void assertRenderedPage(Class<? extends Page> expectedRenderedPageClass)
Page class.
expectedRenderedPageClass - expected class of last rendered Page
public void assertResultPage(Class<?> clazz,
String filename)
throws Exception
Page against an expected HTML document.
Use -Dwicket.replace.expected.results=true to automatically replace the expected
output file.
assertResultPage in class BaseWicketTesterclazz - Class used to load the file (relative to clazz package)filename - expected output filename String
Exception
public void assertResultPage(String expectedDocument)
throws Exception
Page against an expected HTML document as a
String
expectedDocument - expected output String
Exceptionpublic void assertVisible(String path)
Component is visible.
path - path to a Componentpublic void assertEnabled(String path)
path - path to componentpublic void assertDisabled(String path)
path - path to componentpublic void assertRequired(String path)
path - path to form componentpublic void assertUsability(Component component)
component - public void clickLink(Component link)
link -
public void assertBookmarkablePageLink(String id,
Class<? extends WebPage> pageClass,
PageParameters parameters)
id - pageClass - parameters -
public <T extends Page> void executeTest(Class<?> testClass,
Class<T> pageClass,
String filename)
throws Exception
-Dwicket.replace.expected.results=true to automatically replace the expected
output file.
T - testClass - pageClass - filename -
Exception
public void executeTest(Class<?> testClass,
Page page,
String filename)
throws Exception
-Dwicket.replace.expected.results=true to automatically replace the expected
output file.
testClass - page - filename -
Exception
public void executeTest(Class<?> testClass,
Component component,
String filename)
throws Exception
-Dwicket.replace.expected.results=true to automatically replace the expected
output file.
testClass - component - filename -
Exception
public <T extends Page> void executeTest(Class<?> testClass,
Class<T> pageClass,
PageParameters parameters,
String filename)
throws Exception
-Dwicket.replace.expected.results=true to automatically replace the expected
output file.
T - testClass - pageClass - parameters - filename -
Exception
public void executeListener(Class<?> testClass,
Component component,
String filename)
throws Exception
testClass - component - filename -
Exception
public void executeBehavior(Class<?> testClass,
AbstractAjaxBehavior behavior,
String filename)
throws Exception
testClass - behavior - filename -
Exceptionpublic void assertRedirectUrl(String expectedRedirectUrl)
expectedRedirectUrl - expectedpublic static String getBasedir()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||