所以,如果我把所有的JUnit斷言,從一個回調方法裏面失敗我得到這個異常:GWTTestCase:回調中JUnit斷言提高JavaScriptException
Mar 12, 2012 11:24:41 AM
com.gargoylesoftware.htmlunit.javascript.background.JavaScriptJobManagerImpl runJob
SEVERE: Job run failed with unexpected RuntimeException: [object Class JavaObject] (injected script#14)
net.sourceforge.htmlunit.corejs.javascript.JavaScriptException: [object Class JavaObject] (injected script#14)
at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1062)
at script(injected script:14)
at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:845)
at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:164)
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.doTopCall(ContextFactory.java:429)
at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:269)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3162)
at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:162)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:559)
at com.gargoylesoftware.htmlunit.javascript.host.xml.XMLHttpRequest.setState(XMLHttpRequest.java:181)
at com.gargoylesoftware.htmlunit.javascript.host.xml.XMLHttpRequest.doSend(XMLHttpRequest.java:525)
at com.gargoylesoftware.htmlunit.javascript.host.xml.XMLHttpRequest.access$000(XMLHttpRequest.java:64)
at com.gargoylesoftware.htmlunit.javascript.host.xml.XMLHttpRequest$1.run(XMLHttpRequest.java:461)
at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:537)
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:538)
at com.gargoylesoftware.htmlunit.javascript.host.xml.XMLHttpRequest$2.run(XMLHttpRequest.java:467)
at com.gargoylesoftware.htmlunit.javascript.background.JavaScriptJobManagerImpl.runJob(JavaScriptJobManagerImpl.java:226)
at com.gargoylesoftware.htmlunit.javascript.background.JavaScriptJobManagerImpl.runSingleJob(JavaScriptJobManagerImpl.java:307)
at com.gargoylesoftware.htmlunit.javascript.background.JavaScriptExecutor.run(JavaScriptExecutor.java:182)
at java.lang.Thread.run(Thread.java:722)
一個簡單的測試產生這樣的:
public void testSimple() {
MyPrgrmServiceAsync serv = GWT.create(MyPrgrmService.class);
serv.search("some query", new AsyncCallback<SearchResult>() {
public void onSuccess(SearchResult sr) {
fail();
}
public void onFailure(Throwable caught) {
fail(caught.toString());
}
});
delayTestFinish(60000);
}
運行此測試時,只要JUnit Runner關注Eclipse中顯示的綠色條,它就「通過」,但顯然它應該失敗。唯一出現問題的跡象是控制檯中的例外情況。如果我在回調之外移動fail(),它會正常失敗並指示如此。此外,解析爲true的斷言行爲正常,所以似乎測試根本不知道如何在匿名類中產生錯誤時檢測失敗。有沒有我不正確地理解如何在GWTTestCase的回調/匿名類中使用JUnit斷言?
使用:
public void onSuccess(SearchResult sr){ System.out.println(「here」); fail(); } 測試RPC確實通過,因爲它打印「這裏」,並且Junit仍然沒有檢測到任何故障,儘管它應該。如果有幫助,我已經更新了帶有完整堆棧跟蹤的問題... – 2012-03-12 15:29:56