设为首页 加入收藏

TOP

使用 Guard 在 Android 上进行连续测试
2014-11-24 11:07:41 来源: 作者: 【 】 浏览:0
Tags:使用 Guard Android 进行 连续 测试

我发现Java中缺少一种容易使用的库,就像Ruby的Guard。 Guard是一个能轻松处理文件系统修改事件的命令行工具。有了它,就可以让 连续测试更加容易。


例如,利用Guard,你可以创建一个Guardfile来监视你的文件系统(当然,你可以选择哪些类型的文件需要监视,像.rb文件等等);更重要的是,一旦这些目标文件发生变化(你添加一些代码)就会调用触发器,比如运行测试套件,调用Rake命令等等。因此,利用Guard,你可以设置一个当源文件改变时调用测试套件的执行过程(或者一个单独的测试) - 这样你就不必手动调用一个Rake任务或做其它事情来运行一个测试。


设置Guard来调用Ant。首先你必须安装Ruby,其次是 RubyGems和 Bundler。接下来,在你的Gemfile添加如下代码:


source :rubygems

group :development do
gem 'guard'
gem 'growl'
end


由于我使用的是Mac,我要用 Growl,它是一个操作系统级的通知机制,它会弹出一个对话框来通知你,你的测试是成功,失败等等。


接下来,你需要创建一个Guardfile - 在本例中,我将创建一个内联Guardfile,当没有插件可用时还能支持运行一些像Ant的东西。我的内联Guardfile代码如下:


require 'guard/guard'

module ::Guard
class Ant< ::Guard::Guard
def run_all
invoke_ant
end

def run_on_changes(paths)
invoke_ant
end

def start
invoke_ant
end

def stop
end

def invoke_ant
system 'ant clean test'
end

end
end

guard 'ant' do
watch(%r{^src/*/(.+)\.java$})
end


从上面可以看出,Guardfile会监视任何.java的文件。这些文件有任何改变,就会马上运行ant来清除测试。Guard基类相当的简单,通过它你可以实现一系列的相关方法。在这种情况下,start会第一时间启动Guard。run_on_changes则用于当传入的文件路径发生改变时,运行单个测试;然而,在本例中,我选择当参数传递到Ant再次运行该测试套件,并调用一个特殊的JUnit任务用于单个测试。最后,run_all会在一些特别情况下调用,比如在你修复了一个失败的测试后,等等。事实上,这些都是生命周期方法,你完全可以控制它们在什么情况下调用。


连续测试在Java中不是新的技术。例如,一个简单的搜索用Java的连续测试工具 InfinitestJUnit Max,这两个都是很好的工具,且都是IDE的插件,比如Eclipse。不过,我已经不用Eclipse有些日子了,改用IntelliJ(Infinitest也支持IntelliJ)。因此,这些天,我做的所有Android开发都是用IntelliJ。但是,我更倾向于用Ant构建Android工程(尽管Android上有一个 Maven库)。


最后我想说的就是,我想要一种简单的方式来连续运行测试,只要当我改变一个文件后,能随时运行,而不要我手动启动一个Ant/Rake/ Cake去构建测试,那它就是好的。


英文原文 , OSChina.NET翻译


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Python select实现异步IO 下一篇Linux网络编程学习笔记

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·有没有哪些高效的c++ (2025-12-27 08:20:57)
·Socket 编程时 Accep (2025-12-27 08:20:54)
·计算机网络知识点总 (2025-12-27 08:20:52)
·一篇说人话的文章, (2025-12-27 07:50:09)
·Python Web框架哪家 (2025-12-27 07:50:06)