JWebUnit
JWebUnit is a web application testing framework written in Java, which essentially tries to provide a simple API to the powerful HtmlUnit framework. I am a committer to the project.
Google Maps
By default, JWebUnit can’t handle Google Maps, because the Google Maps Javascript has a syntax error. One solution is to turn off throwing script exceptions:
@Override
protected void setUp() throws Exception {
HtmlUnitTestingEngineImpl engine = (HtmlUnitTestingEngineImpl) getTestingEngine();
engine.setThrowExceptionOnScriptError(false);
// continue as normal...
super.setUp();
}
However, this means that ALL script exceptions will be hidden, which is usually not a good thing - you should try and catch script exceptions for your own code. So, you should only use the above code when it is absolutely necessary (I use a mocking approach).
NicelyResynchronizingAjaxController
To use the NicelyResynchronizingAjaxController
in your JUnit 4 project, you can use the following code:
@Test
public void testSearchWithEmptySearchString() {
beginAt("/");
if (getTester().getTestingEngine() instanceof HtmlUnitTestingEngineImpl) {
((HtmlUnitTestingEngineImpl) getTester().getTestingEngine()).getWebClient().setAjaxController(new NicelyResynchronizingAjaxController());
}
// ...
}
- Running arbitrary Javascript
((HtmlPage) ((HtmlUnitTestingEngineImpl) getTestingEngine()).getCurrentWindow().getEnclosedPage()).executeJavaScript("alert('hello, world!');");