|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.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 ;-)" }); }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> identified by "id" points to the page as expected - including parameters. |
|
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 Class
public WicketTester(WebApplication application)
WicketTester
.
application
- a WicketTester
WebApplication
objectpublic 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 null
MockApplication.MockApplication()
public WicketTester(WebApplication application, javax.servlet.ServletContext servletCtx)
WicketTester
to help unit testing.
application
- a WicketTester
WebApplication
objectservletCtx
- the servlet context used as backendMethod Detail |
---|
public void assertAjaxLocation()
public void assertComponent(String path, Class<? extends Component> expectedComponentClass)
Component
class.
path
- path to Component
expectedComponentClass
- 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 messagespublic 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
Component
expectedLabelText
- 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 modelpublic void assertListView(String path, List<?> expectedList)
ListView
.
assertListView
in class BaseWicketTester
path
- path to a ListView
Component
expectedList
- expected List
in the model of the given ListView
public 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 BaseWicketTester
clazz
- 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
Exception
public void assertVisible(String path)
Component
is visible.
path
- path to a Component
public 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
-
Exception
public 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 |