快速业务通道

Eclipse富Ajax开发平台在CAS Software AG项目中的应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
test. *    * Creates and disposes an objects, and checks if  there are some leaking instances. * * @type member * @return {void} */  testMemoryLeak : function() {   var ms1 = de.tests.MemoryLeakUtil.getMemorySnapshot();   // create   var dc = new  de.cas.qx.ui.widget.calendar.datechooser.DateChooser();   qx.ui.core.Widget.flushGlobalQueues();   // dispose   dc.dispose();   var ms2 = de.tests.MemoryLeakUtil.getMemorySnapshot();   var msg = de.tests.MemoryLeakUtil.checkMemoryLeak(ms1,  ms2);   this.assertEquals("", msg, "There are some leaking  objects!"); },

Eclipse富Ajax开发平台在CAS Software AG项目中的应用(3)

时间:2010-12-04 infoq 译:连小剑

这个特定测试试图找到由DateChooser组件引起的潜在的内存泄露 (DateChoose是CAS开发的定制组件中的一个)。 MemoryLeakUtil类是一个CAS 创建的定制工具类,它使用了Qooxdoo提供的一些功能,比如列出内存中的所有 对象。通过Qooxoo提供的功能,他们可以轻易的对内存泄露问题来做测试,而这 类问题是在JavaScript组件开发中很常见的。在测试RAP用户界面时需要面对的 另外一个问题是处理UI的异步和动态的状态。有一些工具可以用来记录用户界面 并且可以把这个过程存储起来,从而可以反复运行。这种类型的测试有助于检查 UI的行为和交互,仿佛是有用户在真正使用它,但是它们也有局限性。在CAS对 web应用程序测试工具做的大致评估中,他们还没有发现一款工具可以处理异步 和非基于页面的用户界面,如遇到基于Ajax的应用程序,它的内容是动态装载的 的而非改变整个页面。

单元测试中有时也会遇到的一个问题是对服务器和/或数据层进行测试。通常 单元测试代码直接与服务器、数据库等直接通信来完成它们的测试。这种类型的 测试有其缺陷,CAS的开发者们也遇到过,单元测试由于需要和其他层的通信而 变得很慢。一个通常的的解决办法是用假对象,在测试中用假对象来代替“真对 象”。在 java中有很多假对象的框架,包括Mockito、EasyMock和JMock,它们 用来简化假对象的创建过程。对JavaScript来说,也有这样的假对象框架比如 JSMock和Mock4JS。

之前您看到了用于测试JavaScript层的单元测试代码,之后您将会看到一段 测试Java层的例子。对Eclipse 1.1来说,这个框架框架基本上包含了相当于 JUnit的测试的功能,不同的是它可以使需要OSGi环境的测试正常运行。如果您 需要执行期间更新UI的单元测试,您可以非常简单地从 org.eclipse.rap.junit.RAPTestCase扩展。但是,如果对单元测试来说不需要 更新用户界面,那么相应地,你可以扩展JUnit的org.junit.TestCase类。下面 是一个关于包含了用户界面交互的RAP的测试用例:

public class RapJUnitTest extends RAPTestCase {    public void testOpenView() {     try {      IWorkbenchPage page = getPage();      page.showView ( "org.eclipse.rap.demo.DemoTreeViewPartI" );     } catch( PartInitException e ) {      e.printStackTrace();     }     assertEquals( 1, getPage().getViewReferences().length  );     getPage().hideView( getPage().getViewReferences()[ 0 ]  );     assertEquals( 0, getPage().getViewReferences().length  );    }    private IWorkbenchPage getPage() {     IWorkbench workbench = PlatformUI.getWorkbench();     IWorkbenchWindow

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号