歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

使用 Guard 在 Android 上進行連續測試

這些天我花了不少時間在寫Ruby代碼。然而,我卻發現自己在Android平台上開發,中間來回使用著各種語言,像Ruby、Java和JavaScript,十分有趣。

我發現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的連續測試工具 Infinitest和 JUnit Max,這兩個都是很好的工具,且都是IDE的插件,比如Eclipse。不過,我已經不用Eclipse有些日子了,改用IntelliJ(Infinitest也支持IntelliJ)。因此,這些天,我做的所有Android開發都是用IntelliJ。但是,我更傾向於用Ant構建Android工程(盡管Android上有一個 Maven庫)。

最後我想說的就是,我想要一種簡單的方式來連續運行測試,只要當我改變一個文件後,能隨時運行,而不要我手動啟動一個Ant/Rake/ Cake去構建測試,那它就是好的。

英文原文 , OSChina.NET翻譯

Copyright © Linux教程網 All Rights Reserved