`
helian
  • 浏览: 17216 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用groovy测试javascript -- Sumatra框架 -- 第一部分

阅读更多


原作者Scott Vlaminck

http://refactr.com/blog/

scott@refactr.com

 

原文出自GroovyMag sampler,也就是免费下载的那一期。有兴趣的朋友可以去http://www.groovymag.com/注册并免费下载。

 

作者自称在开发RIA过程中使用了大量javascript。虽然可以用selenium+jsUnit进行测试,但这位老兄还是希望可以在持续集成中用java什么的进行测试。于是他想到了Rhino。拥有两年groovy使用经验的作者在不太好用的Rhino外面包了一层groovy,这就是他的Sumatra -- 一个在java下运行的javascript测试框架。

 

资源:

SVN: http://svn.assembla.com/svn/sumatra/trunk/sumatra

grails插件下载: http://plugins.grails.org/grails-sumatra/tags/RELEASE_0_2/grails-sumatra-0.2.zip

 

1. 测试简单javascript对象

 

 

Conference = function() {}
Conference.prototype = {
name:null,
sessions:new Array()
}
Session = function() {}
Session.prototype = {
title:null
}
var minnesotaBarCamp = new Conference()
minnesotaBarCamp.name = 'Minnebar'

 

以上javascript代码创建了两个有关系的模型,Conference 和 Session。然后创建了一个Conference 的实例,其中的sessions为空。将以上javascript存成一个文件:conference.js

 

 

class PrototypeTest extends sumatra.groovy.SumatraTestCase{

}

 写一个groovy测试,继承sumatra里面提供的SumatraTestCase就可以了。

 

 

load('conference.js')
def conference = getJsObject('minnesotaBarCamp')
// check attributes on the javascript object
assert 'Minnebar' == conference.name
assert null != conference.sessions
assert 0 == conference.sessions.length
 

在测试代码中,可以用load方法调用js文件。getJsObject方法则提供了引用javascript中object的途径。上面代码里的conference 就是对conference.js里minnesotaBarCamp 的引用。

之后的断言代码就没什么说的了,很简单明了。

 

 

load('conference.js')
def conference = getJsObject('minnesotaBarCamp')
assert 0 == conference.sessions.length
// using the 'init' builder instantiates a Session javascript object defined in conference.js
def session1 = init.Session()
session1.name = 'Metaprogramming in Groovy'
conference.sessions.push(session1)
// since these are JavaScript objects
// adding items to an array this way also works:
// conference.sessions[0] = session1
assert 1 == conference.sessions.length
assert "Metaprogramming in Groovy" == conference.sessions[0].name
 

 

 

当然通常我们调用的js里面不会实例化什么东西让我们调用的,我们要自己实例化,在SumatraTestCase中提供了init这个builder来帮忙。init.Session()就实例化了一个Session。

 

 

execJs('var object = new Object()')
execJs('object.message = "Hello World"')
def object = getJsObject('object');
assert 'Hello World' == object.message
 

在SumatraTestCase还可以用execJs直接运行javascript代码。上面的代码就是范例。

 

第二部分

  • 大小: 25.2 KB
分享到:
评论
1 楼 helian 2009-11-25  
<p><span style="font-family: Arial, sans-serif, Helvetica, Tahoma; line-height: 18px;">
</span></p>
<div class="blog_title" style="margin-bottom: 15px;">
<h3 style="font-size: 16px; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 10px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: black;"><span style="font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; font-weight: normal; line-height: 18px;">
<div class="blog_title" style="margin-bottom: 15px;">
<h3 style="font-size: 16px; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 10px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: black;"><a class="quote_title" href="http://helian.iteye.com/admin/blogs/526367">用groovy测试javascript -- Sumatra框架 -- 第二部分</a></h3>
</div>
<div class="blog_content">
<p style="padding: 0px; margin: 0px;"><span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><span style="line-height: normal;"><span style="font-family: Arial, sans-serif, Helvetica, Tahoma;"><span style="line-height: 18px;"><br></span></span></span></span></p>
</div>
</span></h3>
</div>

相关推荐

    groovy-3.0.9-API文档-中英对照版.zip

    赠送jar包:groovy-3.0.9.jar; 赠送原API文档:groovy-3.0.9-javadoc.jar; 赠送源代码:groovy-3.0.9-sources.jar; 赠送Maven依赖信息文件:groovy-3.0.9.pom; 包含翻译后的API文档:groovy-3.0.9-javadoc-API...

    groovy-all-2.4.5-API文档-中英对照版.zip

    赠送jar包:groovy-all-2.4.5.jar; 赠送原API文档:groovy-all-2.4.5-javadoc.jar; 赠送源代码:groovy-all-2.4.5-sources.jar; 赠送Maven依赖信息文件:groovy-all-2.4.5.pom; 包含翻译后的API文档:groovy-all...

    groovy-all-2.4.13-API文档-中文版.zip

    赠送jar包:groovy-all-2.4.13.jar; 赠送原API文档:groovy-all-2.4.13-javadoc.jar; 赠送源代码:groovy-all-2.4.13-sources.jar; 赠送Maven依赖信息文件:groovy-all-2.4.13.pom; 包含翻译后的API文档:groovy...

    groovy-all-2.4.15.jar

    org.gradle.api.resources.ResourceException: Could not get resource 'https://jcenter.bintray.com/org/codehaus/groovy/groovy-all/2.4.15/groovy-all-2.4.15.jar'. ...重启 Android Studio 及可使用。

    groovy-all-2.4.5-API文档-中文版.zip

    赠送jar包:groovy-all-2.4.5.jar; 赠送原API文档:groovy-all-2.4.5-javadoc.jar; 赠送源代码:groovy-all-2.4.5-sources.jar; 赠送Maven依赖信息文件:groovy-all-2.4.5.pom; 包含翻译后的API文档:groovy-all...

    groovy-3.0.9-API文档-中文版.zip

    赠送jar包:groovy-3.0.9.jar; 赠送原API文档:groovy-3.0.9-javadoc.jar; 赠送源代码:groovy-3.0.9-sources.jar; 赠送Maven依赖信息文件:groovy-3.0.9.pom; 包含翻译后的API文档:groovy-3.0.9-javadoc-API...

    groovy-all-2.4.15.jar.zip

    groovy-all-2.4.15.jar文件,MAC使用时需存放在/Users/用户名/.gradle/caches/jars-3/某一缓存目录下,找不到就都看一下,我遇到的问题是缓存目录中下载的是2.4.17版本,应该跟gradle版本升级有关

    groovy-all-2.4.8.jar

    Groovy All-2.4.8.jar 是一个包含Groovy库的集合包,主要用于简化Groovy环境的搭建和使用。这个版本(2.4.8)是Groovy在2.x系列中的一个稳定发行版,提供了一系列的功能和性能改进。 1. **Groovy简介** - Groovy是...

    groovy-binary-1.8.6

    1. **Spock**:Groovy还有一款强大的测试框架Spock,其基于行为驱动开发(BDD)理念,提供了简洁的语法来编写单元测试和集成测试。 在"groovy-binary-1.8.6"这个版本中,可能包含以下内容: - **JAR文件**:包含了...

    groovy-all-2.4.12.jar

    最近的groovy-all-2.4.12.jar包供使用,解决as编译时报错问题

    groovy-2.3.6-installer

    此外,Groovy还可以用于构建脚本、Web开发(如Grails框架)、自动化测试(Spock框架)、数据处理和集成等多种用途。 Groovy与Java的互操作性是其一大亮点。由于Groovy编译成字节码运行在JVM上,因此可以调用所有的...

    groovy-2.5.1-API文档-中英对照版.zip

    赠送jar包:groovy-2.5.1.jar; 赠送原API文档:groovy-2.5.1-javadoc.jar; 赠送源代码:groovy-2.5.1-sources.jar; 赠送Maven依赖信息文件:groovy-2.5.1.pom; 包含翻译后的API文档:groovy-2.5.1-javadoc-API...

    apache-groovy-sdk-4.0.1下载

    1. **groovy-all.jar**:这是一个包含了Groovy库所有模块的集合,你可以通过引入这个单一的jar文件来快速地在项目中使用Groovy。 2. **bin**目录:包含了一系列可执行脚本,如`groovy`, `groovyc`, 和 `groovysh`,...

    apache-groovy-sdk-3.0.6.zip

    1. **Groovy编译器**:SDK中的`groovy-3.0.6`目录可能包含了Groovy编译器,它是将Groovy源代码转换成Java字节码的工具,使得Groovy程序能够在Java平台上运行。 2. **GroovyShell和GroovyConsole**:这两个工具允许...

    groovy-all-2.1.6.jar

    groovy-all-2.1.6.jar groovy-all-2.1.6.jargroovy-all-2.1.6.jar

    groovy-sdk-4.0.3

    总的来说,Groovy SDK 4.0.3是一个完整的开发环境,它为Groovy开发者提供了编写、测试和运行代码所需的所有工具,是学习和使用Groovy语言的重要资源。通过安装和配置这个SDK,你可以开始探索Groovy的动态世界,体验...

    apache-groovy-sdk-2.5.6.zip

    10. **Spock测试框架**:Groovy还催生了Spock,一个功能强大的BDD/TDD测试框架,其语法简洁易懂,非常适合Groovy和Java项目的测试。 在下载并解压"apache-groovy-sdk-2.5.6.zip"后,开发者可以找到`groovy-2.5.6`...

    groovy-2.5.1-API文档-中文版.zip

    赠送jar包:groovy-2.5.1.jar; 赠送原API文档:groovy-2.5.1-javadoc.jar; 赠送源代码:groovy-2.5.1-sources.jar; 赠送Maven依赖信息文件:groovy-2.5.1.pom; 包含翻译后的API文档:groovy-2.5.1-javadoc-API...

    groovy-all

    如果你的项目中使用了Groovy,这个库将提供一个完整的生态系统,帮助你充分利用Groovy的灵活性和效率。在Java项目中引入这个库,你可以轻松地集成Groovy脚本,提升开发效率,同时得益于其动态特性和强大的库支持。

    groovy-all-2.4.7.jar

    groovy-all-2.4.7.jar

Global site tag (gtag.js) - Google Analytics