采用GWT提供的单元测试类,可以在不启动host模式的情况下测试客户端代码.对指定的模块测试其客户端的所有代码.
(详细请参考:http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuideJUnitCreation)
在Eclipse下单元测试GWT的客户端代码的方法:
If you prefer not to use the , you may create a test case suite by hand by following the instructions below:
- Define a class that extends GWTTestCase. Make sure your test class is on the module source path (e.g. in the client subpackage of your module.) You can add new source paths by editing the
and adding a <source> element.
- If you do not have a GWT module yet, create a
that causes the source for your test case to be included. If you are adding a test case to an existing GWT app, you can just use the existing module.
- Implement the method GWTTestCase.getModuleName() to return the fully-qualified name of the module. This is the glue that tells the JUnit Test case which module to instantiate.
- Compile your test case class to bytecode. You can use the Java compiler directly using javac or a Java IDE such as Eclipse.
- Run your test case. Use the class junit.textui.TestRunner as your main class and pass the full name of your test class as the command line argument, e.g. com.example.foo.client.FooTest. When running the test case, make sure your classpath includes:
- Your project's src directory
- Your project's bin directory
- The gwt-user.jar library
- One of gwt-dev-windows.jar, gwt-dev-linux.jar, or gwt-dev-mac.jar depending on your platform
- The junit.jar library
我的例子:
package com.google.gwt.sample.kitchensink.client.test;
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.sample.kitchensink.client.Foo;
import com.google.gwt.sample.kitchensink.client.KitchenSink;
import com.google.gwt.sample.kitchensink.client.MySink;
import com.google.gwt.sample.kitchensink.client.Sink.SinkInfo;
import com.google.gwt.sample.kitchensink.client.service.MyService;
import com.google.gwt.sample.kitchensink.client.service.MyServiceAsync;
import com.google.gwt.sample.kitchensink.client.service.MyServiceAsync.MyServiceClass;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
public class GwtTestCaseTest extends GWTTestCase {
public String getModuleName() {
// TODO Auto-generated method stub
return "com.google.gwt.sample.kitchensink.KitchenSink";
}
public void testMyButton() {
System.out.println("============b=============");
Foo myModule = new Foo();
assertTrue(myModule.exampleValidator("foo"));
assertTrue(myModule.exampleValidator("Foo"));
assertTrue(myModule.exampleValidator("FOO"));
assertTrue(myModule.exampleValidator("fOo"));
}
public void testKitchenSink(){
KitchenSink sink = new KitchenSink();
sink.onModuleLoad();
final HTML html = new HTML();
MyServiceAsync myServiceAsync = MyServiceClass.getMyServiceAsync();
myServiceAsync.login("diaoge", "12345", new AsyncCallback(){
public void onFailure(Throwable caught) {
html.setHTML("未能连接服务器");
}
public void onSuccess(Object result) {
Integer res = (Integer)result;
int i = res.intValue();
if(i == MyService.LOGIN_SUCCESS){
html.setHTML("登录成功");
}else{
html.setHTML(i+"");
}
}
});
}
}
在Eclipse单元测试的配置
<?xml version="1.0" encoding="UTF-8"?>
<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/com.hotye.gwt/test/com/google/gwt/sample/kitchensink/client/test/GwtTestCaseTest.java"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
<listEntry value="<?xml version="1.0" encoding="UTF-8"?>
<runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER" javaProject="com.hotye.gwt" path="1" type="4"/>
"/>
<listEntry value="<?xml version="1.0" encoding="UTF-8"?>
<runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.defaultClasspath">
<memento exportedEntriesOnly="false" project="com.hotye.gwt"/>
</runtimeClasspathEntry>
"/>
<listEntry value="<?xml version="1.0" encoding="UTF-8"?>
<runtimeClasspathEntry internalArchive="/com.hotye.gwt/src" path="3" type="2"/>
"/>
<listEntry value="<?xml version="1.0" encoding="UTF-8"?>
<runtimeClasspathEntry internalArchive="/com.hotye.gwt/test" path="3" type="2"/>
"/>
<listEntry value="<?xml version="1.0" encoding="UTF-8"?>
<runtimeClasspathEntry internalArchive="/com.hotye.gwt/gwtext" path="3" type="2"/>
"/>
</listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.sample.kitchensink.client.test.GwtTestCaseTest"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.hotye.gwt"/>
</launchConfiguration>
运行图
- 描述: Eclipse运行单元测试的图
- 大小: 82 KB
分享到:
相关推荐
标题 "GWTTestcase的单元测试" 涉及到的是使用Google Web Toolkit (GWT) 进行单元测试的方法。GWT是一个开源框架,它允许开发者使用Java语言编写客户端Web应用,然后编译成JavaScript运行在浏览器上。在GWT项目中...
使用GWTTestCase测试GWT应用程序可能会很痛苦-比使用纯Java测试要慢,并且您不能使用基于反射的工具(例如模拟框架)。 但是,如果您尝试使用正常的测试用例来测试窗口小部件,则可能会遇到以下错误: ERROR: GWT....
使用 GWTTestCase 测试 GWT 应用会比纯 Java 测试慢,而且不能使用基于反射的工具,比如模拟测试框架。如果尝试使用常规测试示例,那么会遇到这个错误:ERROR: GWT.create() is only usable in client code!...
`2module-mouse-event-testcase`这个文件名暗示可能存在针对某个特定模块(可能是鼠标事件处理相关的)的单元测试。在GWT中,可以使用JUnit和GWTTestCase进行测试,确保每个模块的功能正确无误。 7. **编译优化**:...
- **测试和调试**:使用GWT测试工具如GWTTestCase进行单元测试,以及使用开发模式进行调试。 - **最佳实践**:书中可能包含作者对GWT开发的经验总结,包括代码结构、团队协作和项目管理的最佳实践。 通过深入学习这...
8. **调试和测试**:GWT提供了强大的开发和测试工具,如Super Dev Mode和单元测试框架(GwtTestCase)。文档会指导开发者如何有效地调试代码和编写测试用例。 9. **API参考**:完整的API文档是开发过程中不可或缺的...
9. **单元测试**:GWT提供GWTTestCase类来进行客户端代码的单元测试。源码可能包含如何编写和运行这些测试的示例。 通过深入研究《GWT in Action》随书源码,你可以获得对GWT开发的全面理解,掌握实际项目中的最佳...
了解GWT的测试框架,如GwtTestCase和GwtMockito,进行单元测试和集成测试。此外,探索GWT的其他高级特性,如GWT的Compiler优化选项,以及如何自定义编译过程。最后,研究GWT与其他技术的集成,例如与AngularJS、...
9. **单元测试与模拟**:GWT提供JUnit支持进行客户端代码的单元测试,以及模拟服务端接口的GWTTestCase,以确保代码质量。 10. **最佳实践与案例研究**:书籍可能会涵盖一些最佳实践,如代码组织、性能优化、错误...
7. **测试**:了解单元测试和集成测试在Spring和GWT项目中的应用,例如使用JUnit和GwtTestCase。 通过分析这个实例源码,你可以加深对Spring和GWT集成的理解,掌握现代Web应用的开发流程和技术栈。同时,这也会提高...
对于测试方面,书中的内容将涵盖GWT的单元测试和集成测试工具,如GWTTestCase,以及如何利用模拟(Mock)对象进行测试驱动开发。 最后,书中的实例和项目实践章节将帮助读者将理论知识转化为实际操作,通过完成一些...
它提供了一种简单的方法来为GWT客户端代码编写快速的Java测试,而无需GWTTestCase或任何servlet容器实例! 这意味着您可以不受限制地使用任何Java工具:JUnit,反射,Easymock,Mockito等。 编写测试如下所示: @...
8. **测试和调试**:掌握GWT的单元测试框架GWTTestCase,以及如何使用GWT的开发模式进行实时调试。 9. **最佳实践和案例研究**:书中可能会提供实际项目案例,介绍如何在实际开发中应用GWT的最佳实践。 通过深入...
GWT提供了单元测试框架GWTTestCase,允许在服务器端进行客户端代码的测试。在Super Dev Mode下,可以使用Chrome DevTools进行实时调试,查看编译后的JavaScript代码。 10. **监控与日志**: 对于部署的应用,应...
GWT提供了模拟浏览器环境的测试工具,如`GwtTestCase`,可以在编译时执行单元测试。 ### GWT进阶 **1. GWT Compile优化** GWT编译器可以进行多种优化,如死代码删除、类型推断、按需加载等,以减小生成的...
4. **测试与调试**:了解GWT的单元测试工具GwtTestCase,以及如何使用GWT的超级浏览器模式进行调试。 5. **最佳实践**:获取有关Gwt-Ext开发的最佳实践,包括代码组织、组件设计和应用架构。 通过这个压缩包中的...
- **GWTTestCase**:提供了单元测试框架,用于测试GWT应用的代码。 4. **GWT的应用场景**: GWT特别适合构建大型、企业级的Web应用,如协同办公系统、在线交易平台、数据分析平台等。其高性能、跨平台特性和强大...
7. **单元测试和调试**:GWT支持单元测试,开发者可能使用GWT测试工具如GwtTestCase进行前端代码的测试。同时,GWT的Super Dev Mode提供了快速的热部署和调试功能。 通过这个项目,开发者不仅可以学习到如何在GWT...
6. **测试**:GWT项目通常会包含单元测试和集成测试,确保应用的功能正确性。`JUnit` 测试可以用来验证计算逻辑,而GWT测试框架(如`GwtTestCase`)则用于在模拟环境中测试客户端代码。 7. **构建脚本**:`build....