Wir haben die JUnit-Integration in unseren Java-Javascript-Codegenerator ST-JS ( http://st-js.org ). Das Framework generiert das entsprechende Javascript sowohl für den getesteten Code als auch für die Unit-Tests und sendet den Code an verschiedene Browser.
Ein separater Server ist nicht erforderlich, da der Unit-Test-Runner den benötigten http-Port öffnet (und nach Abschluss der Tests wieder schließt). Das Framework manipuliert den Java-Stacktrace so, dass die fehlgeschlagenen Asserts vom JUnit Eclipse-Plugin korrekt angezeigt werden. Hier ist ein einfaches Beispiel mit jQuery und Mockjax:
@RunWith(STJSTestDriverRunner.class)
@HTMLFixture("<div id='fortune'></div>")
@Scripts({ "classpath://jquery.js",
"classpath://jquery.mockjax.js", "classpath://json2.js" })
public class MockjaxExampleTest {
@Test
public void myTest() {
$.ajaxSetup($map("async", false));
$.mockjax(new MockjaxOptions() {
{
url = "/restful/fortune";
responseText = new Fortune() {
{
status = "success";
fortune = "Are you a turtle?";
}
};
}
});
$.getJSON("/restful/fortune", null, new Callback3<Fortune, String, JQueryXHR>() {
@Override
public void $invoke(Fortune response, String p2, JQueryXHR p3) {
if (response.status.equals("success")) {
$("#fortune").html("Your fortune is: " + response.fortune);
} else {
$("#fortune").html("Things do not look good, no fortune was told");
}
}
});
assertEquals("Your fortune is: Are you a turtle?", $("#fortune").html());
}
private static class Fortune {
public String status;
public String fortune;
}
}