FunFx Getting Started

【前言】早在半年前的项目之处就想采用TDD的开发方式,最起码也要做到较完备的自动化测试。当时调研了很久找到一个叫FunFx的开源框架。可惜这个框架的试用之路并不平坦。最初找到的只有文档,照着文档做,失败了。看到文档上还是Flex2的,换成Flex2,编译都通不过,原来Flex2需要lcds的license只好回到flex3。被逼无奈去看代码,我的Ruby水平是二把刀,尽管改代码了,但还是通不过。怀疑是不是不支持Flex3,而且项目进度又容不得我们慢慢研究,只好自己写了一个功能有残次的测试框架,凑付着用,后来因为框架的扩展速度慢慢跟不上开发的速度,最终连写自动化测试用例的计划也放弃了。随着FunFx出了0.0.2,又对这个测试框架产生了一点希望,再次搭建的结果还是一度失败,经过不懈努力,总算在大年三十的下午运行了第一个Hello World!。
【正题:搭建TDD测试环境】(下面我说的过程是我个人运行的过程,应该是运行FunFx的充分条件,但不保证都是必要条件,如果有人发现哪个步骤是不必要的。请在回复中指出。)
FunFX是一个基于Ruby的自动化测试框架,所以,我们必须要装Ruby,我安装的Ruby版本是Ruby-186-26。我的Ruby IDE是eclipse上的RDT插件。我的操作系统是笔记本自带的Vista Home Basic,因此我的IE是ie7。我的Flex IDE是Flex Builder 3 beta3。
运行环境就这些,那么开始讲解搭建过程吧。我们从下载开始说起,首先,我们要去RubyForge下载FunFx 0.0.2,那是一个zip文件,记得要把Source包也下载下来,在后面我会说到它的用处。
下载完毕之后,将其解压,我们可以看到三个文件:
  • AutomationGenericEnv.xml
  • FunFX-0.0.2.gem
  • FunFXAdapter.swc
接下来,我们在FlexBuilder3中新建一个工程:LearnFunFx,在libs文件夹里加入下面三个swc文件:
  • automation_agent.swc
  • automation.swc
  • FunFXAdapter.swc
这里面的前两个swc文件来自flex的sdk里面。后面的一个就是FunFx里面的swc,但是这个swc有可能是无法使用的,因为它是为flex 2编译的,这时就需要我们前面下载的源代码文件了。源代码文件解压开之后可以找到FunFXAdapter文件夹。里面就是FunFXAdapter.swc的源代码(包括测试代码)。将其编译成swc(如果你不会编译成swc,请查阅相关文章或自己琢磨,给你个提示,可以用library project)。将我们自己编译出来的swc文件拷到libs里。这样我们就收集全了所有的类包。

接着将AutomationGenericEnv.xml拷贝到src文件夹下,然后在LearnFunFx.mxml中加入如下代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    
<mx:Script>
        
<![CDATA[
            import mx.controls.Alert;
        
]]>
    
</mx:Script>
    
<mx:Button id="test" x="255" y="146" label="Button" click="Alert.show('Hello World!');"/>
    
</mx:Application> 
代码实现的功能很简单,单击按钮,弹出Hello World!的对话框。
代码准备完了,接下来是编译了。下面我们在我们的工程:LearnFunFx上点击右键:选择Properties,再选择Flex Compiler,在Additional compiler arguments文本框中输入:-include-libraries "XXXX\LearnFunFx\libs\automation.swc" "XXXX\LearnFunFx\libs\automation_agent.swc"  "XXX\LearnFunFx\libs\FunFXAdapter.swc"
XXX表示工程根文件夹,自己补齐。
接下来,一个囫囵的swf文件就被编译出来了。这里还有一个问题,html文件里面的Object标签一定要有一个name属性,其值要跟id一样,这就需要我们改html-template文件夹下的index.template.html了。我的做法是把body标签里的js代码删掉,只留下html标签版本的,然后在Object标签里面加上一个属性:name="${application}"。再次编译一个,将 bin文件夹下的所有文件拷到一个web应用中。

flex端的处理完毕了,接下来是Ruby,还记得那三个文件吗?
在三个文件所在的文件夹中地址栏里运行cmd(这是vista的小技巧,其他的windows可以通过传统的方式进入cmd窗口,并进入该文件夹),在命令行上输入: gem install FunFX-0.0.2.gem等待一小会儿,屏幕上提示:Successfully installed FunFX, version 0.0.2,表示已经安装成功。
然后进入Eclipse 新建一个ruby项目LearnFunFx,也将AutomationGenericEnv.xml拷到源文件同级目录下,新建LearnFunFxTest.rb,输入代码:
require 'test/unit'
require 'funfx'


class LearnFunFxTest < Test::Unit::TestCase
    
def setup
     @ie 
= Funfx.instance
     @ie.start(true)
     @ie.speed 
= 1
    
@ie.goto("http://localhost/.../LearnFunFx.html""LearnFunFx")
    end
    
    
def test_control
        @ie.button(
"test").click
    end
end
“...”是web应用的名字,自己补齐。代码非常简单,功能是打开网页,找到名为LearnFx的swf,点击id为test的按钮。在运行之前,我们还要做一件事,不然的话,我们之前的所有努力都白费了。打开IE,按下alt,选择“工具”-> “Internet选项”,点击“安全”tab页,将“本地Intranet”安全级别设为低,将http://localhost加入可信站点,并将可信站点的安全级别设为低。(这里是我不确定是否多做了什么的地方之一)。做了这些之后,ruby调用js就不会被浏览器阻拦了。(刚才试了一下,运行完测试用例之后再改回去也不会被阻拦了,搞得我很郁闷,但是在我修改这里之前,确实是无法运行的。)
然后我们运行该测试用例,我们就会看到一个浏览器窗口被弹出,swf中的按钮被按下,一个Hello World!的对话框弹出。一切成功:)
(完)




posted on 2008-02-07 22:52 咖啡屋的鼠标 阅读(3331) 评论(8)  编辑  收藏 所属分类: Flex

评论

# re: FunFx Getting Started 2008-02-17 12:30 tweg

非常不错呀  回复  更多评论   

# re: FunFx Getting Started[未登录] 2008-07-09 16:01 nick

现在更新啦 支持FX3啦  回复  更多评论   

# re: FunFx Getting Started[未登录] 2008-11-18 19:10 pan

你好,看了你的帖子,我想请教一个问题:
我们的开发人员用了Flex的一个框架FlexLib,发布之后,我用Ruby(安装了Funfx)写脚本,但发现Funfx根本识别不了这个框架中的对象
在FlexLib的Lib目录里面,有它自己的swc文件。

是否可以告诉我这种情况下,我该如何去做!~~  回复  更多评论   

# re: FunFx Getting Started 2008-11-19 11:32 鼠标

@pan
我所知funfx还不行,可以去找些别的测试工具,在InfoQ上有
  回复  更多评论   

# re: FunFx Getting Started[未登录] 2008-11-19 15:54 pan

谢谢你!~~首先让我知道Funfx不能识别Flexlib这个结果.也是我一直想知道的!~
再者,你让我在InfoQ去找别的测试工具,找了半天,实在是找不到,你是否说个名字,谢谢  回复  更多评论   

# re: FunFx Getting Started 2008-11-19 20:20 鼠标

http://www.google.com/search?q=flex+%E6%B5%8B%E8%AF%95+site%3Awww.infoq.com  回复  更多评论   

# re: FunFx Getting Started[未登录] 2008-11-20 16:52 pan

谢谢了,下载了.用一用再说!~~呵呵  回复  更多评论   

# re: FunFx Getting Started 2011-05-12 13:54 Mickey Song

您好,

您知道出现这个错误是怎么回事吗

ruby、funfx-0.2.2均正确安装

但是运行脚本出现

“ uninitialized constant Funfx (NameError)”  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2008年2月>
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678

导航

统计

常用链接

留言簿(15)

随笔分类(52)

随笔档案(76)

文章分类(3)

文章档案(4)

新闻档案(1)

收藏夹

Flex

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜