介紹
現在IT開發人員比以往任何時候都更加關注測試的重要性沒有經過良好測試的代碼更容易出問題在極限編程中測試驅動開發已經被證明是一種有效提高軟件質量的方法在測試驅動的開發方式中軟件工程師在編寫功能代碼之前首先編寫測試代碼這樣能從最開始保證程序代碼的正確性並且能夠在程序的每次演進時進行自動的回歸測試
單元測試是和開發人員最密切相關的測試類型它通常由開發人員編寫和執行由於單元測試通常發生在錯誤產生之後不久因此通過單元測試發現錯誤然後進行修正的代價通常比較小單元測試是如此重要以至於一些極限編程愛好者主張任何未經測試的代碼都應該被自動刪除JUnit是Java開發人員進行單元測試事實上的標准盡管現在出現了TestNG和JTiger這樣功能更為完善的測試工具JUnit仍然占據著測試工具的頭把交椅
JUnit占據市場壟斷地位的一個證據是目前有很多為JUnit開發的擴展和插件今天我們要講述的就是一個配合JUnit使用的Eclipse插件Continuous Testing它能夠利用機器的空閒計算周期執行測試並將其作為error顯示在Problem View和編輯器的標記區
在編寫代碼的空閒時間執行測試會占用一些CPU時間和其他資源不過相對Continuous Testing提供的好處而言我們不需要對此斤斤計較還記得第一次使用Eclipse的增量編譯嗎?
我記得當時我對這個功能不屑一顧現在我已經完全依靠增量編譯來糾正我偶爾犯下的語法錯誤了對於軟件開發人員而言任何能夠有效縮短編寫編譯測試修改循環的工具都具有重要的意義就此而言我相信Continuous Testing對於軟件開發人員具有重要的意義在/上我們可以看到Continuous Testing受到眾多使用者的好評
安裝Continuous Testing
在Eclipse中安裝Continuous Testing的方法非常簡單類似於安裝其他的plugin的方法首先我們啟動Eclipse單擊菜單項Help>Software Update>Find and Install在彈出的向導對話框中我們選擇Search New Features to Install在彈出的對話框中點擊New Remote Site如圖所示在URL中輸入 點擊OK如圖 所示點擊FinishEclipse會幫助我們增加一個用於Update的站點熟悉 Eclipse的讀者對這個過程一定不會覺得陌生
圖 新建Update Site
添加Update Site之後在隨後出現的Install對話框中選中剛剛添加的Update Site並且按下Finish按鈕如圖 所示經過後續的下載和確認之後我們就安裝好了Continuous Testing了
圖 安裝Continuous Testing
在工程中啟用Continuous Testing 安裝了Continuous Testing之後我們就可以在任何java工程中激活Continuous Testing了在Package Views中單擊鼠標右鍵並從菜單中選擇Property在隨後出現的工程屬性對話框中我們可以看到配置信息有了一個新的分類Continuous Testing選擇這個分類並在Continuous Testing Properties頁面中選中Enable Informed Testing和Enable Continuous Testing這樣我們就激活了Continuous Testing
圖 配置Continuous Testing
在這個對話框中我們還可以配置Continuous Testing的一些設置信息例如尋找Test Case的策略進行測試的優先級設置以及在測試開始之前進行過濾操作等例如我就喜歡讓Continuous Testing優先測試最近出錯的測試
Continuous Testing提供的視圖
接下來我們在一個激活了Continuous Testing的工程中新建一個如下的Test Case可以看到我們這個Test Case沒有包含任何有用的測試我們提供的兩個測試方法一個必定會失敗而另外一個會拋出異常通過這個例子我們可以看到Continuous Testing為我們提供了什麼
package test;
import javautilArrays;
import junitframeworkTestCase;
public class DummyTest extends TestCase {
public void testTopThreeIntsUnsorted() {
Integer one = new Integer();
Integer two = new Integer();
Integer three = new Integer();
Integer four = new Integer();
Integer five = new Integer();
Integer six = new Integer();
assertEquals(ArraysasList(new Integer[] { one two three }) Arrays
asList(new Integer[] { four five six }));
}
public void testException() throws Exception {
throw new IllegalArgumentException();
}
}
Continuous Testing插件在後台執行測試代碼當監測到有錯誤或異常發生Continuous Testing將會通過Problem View來通知開發人員在我們提供的測試用例中Problem View將會如下所示
圖 Problem View
如果我們在Problem View當中雙擊某一條測試錯誤信息那麼Java編輯器將會打開並顯示產生錯誤的測試方法這和我們察看其他錯誤發生地點的方式非常象不是嗎?另外如果我們在編輯器中打開了DummyTestjava我們還可以看到新的測試錯誤標記出現在編輯器的左側欄上
圖 編輯器上的測試錯誤標記
通過上面的描述我們可以看到使用Continuous Testing的方式非常簡單Continuous Testing插件甚至沒有引入任何新的視圖我們工作的方式與以往完全一樣僅有的不同是現在Eclipse在IDE中自動顯示測試錯誤信息
對多Project的支持
當使用JUnit進行測試時我們通常將測試放置在一個單獨的工程中這種情況下我們需要對工程進行一些特殊的配置假如我們將hello工程的Test Case放置在工程hellotest中那麼當我們為hello工程起用Continuous Testing支持時需要按照圖 配置hello工程的Continuous Testing屬性
圖 多工程情況下配置測試
也就是說我們需要改變Continuous Testing查找Test Case的方法使得當hello工程被修改時Continuous Testing從工程hellotest中尋找測試用例
除了多Project支持之外Continuous Testing還支持其他一些高級特性例如howswap低優先級執行remote executeon等感興趣的讀者朋友可以進一步對其進行研究
小結
通過使用Continuous Testing我們能夠在修改代碼的同時對代碼的邏輯正確性進行檢查如果說Eclipse的增量編譯功能使得我們在修改代碼的同時能獲得對代碼語法正確性的信心那麼Continuous Testing能幫助我們獲得對代碼邏輯正確性的信心這兩者的結合能夠使得我們的軟件編寫出現更少的錯誤同時也能夠最大限度的減輕我們修正錯誤所需的代價
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28699.html