幾十年來,Java一直是開發應用程序服務器端的首選編程語言。盡管JUnit一直在與開發人員一起幫助他們進行自動化的單元測試,但隨着時間的推移和測試行業的發展,特別是伴隨着自動化測試的興起,已經開發了許多基於Java的開源框架,它們在驗證和業務邏輯方面與JUnit有所不同。在這里,我將討論用於使用Selenium WebDriver執行測試自動化的頂級Java測試框架,還將重點介紹這些頂級Java測試框架的優缺點和獨到之處。
JUnit
Junit是開發人員基於xUnit基礎上開發的一個實用案例。其最初主要目的是使Java開發人員能夠編寫腳本並執行可重復的測試用例。它通常用於測試一小段代碼。您還可以通過將JUnit與用於測試自動化的Selenium集成來執行網站的自動化測試。每當添加任何新代碼需要發版時,都需要重新執行整個測試用例,並確保沒有不影響原有功能。
有哪些先決條件?
該框架與Selenium WebDriver for Java高度兼容,因此,JUnit和Selenium WebDriver也是完全兼容的,作為某些先決條件,您需要
- 在工作項目中使用較新版本的JDK。
- 下載最新版本的JUnit並設置環境。
- 對面向對象的編程語言(Java)的應用程序開發有很好的使用經驗。
使用JUnit的優缺點?
JUnit有幾個優點:
- 在受測試驅動的環境中工作的開發人員發現它非常有好處,因為他們被迫閱讀代碼並查找是否存在BUG。
- 盡早檢測到錯誤,從而使代碼可靠性大大提高。
- 開發更具可讀性且無錯誤的代碼可以增強可信度。
- 使用最新版本的JUnit(版本5),可以輕松識別異常,也可以執行用舊版JUnit編寫的測試用例。
- 您也可以將其與Java 5以及更高版本一起使用。
JUnit的唯一缺點是:
- 該框架無法執行依賴性測試。那就是我們需要TestNG的地方。
JUnit是您的最佳Java測試框架嗎?
JUnit和TestNG都執行相同的工作。它們的功能幾乎相同,只是在兩個框架中,JUnit無法進行依賴測試,並且參數化測試的實現過程不同。另外,由於JUnit長期使用,因此有更好的社區支持,它已被定義為使用Selenium WebDriver for Java的應用程序進行單元測試的標准。盡管TestNG的用戶很少,但社區仍然很大,並且每天都在增長。因此,我們可以得出結論,對於Java測試框架,在TestNG或JUnit之間進行選擇完全取決於應用程序的性質和要求。
JBehave
我們都知道行為驅動開發(BDD)。這種測試類型以對業務用戶透明的方式描述了驗收測試。JBehave是用於BDD測試的另一個Java測試框架,主要與Selenium WebDriver for Java一起使用。使用JBehave的主要目的是使新手可以輕松理解和熟悉BDD。這是一種設計理念,它使應用程序的測試階段更多地基於其行為。
有哪些先決條件?
使用JBehave的理想方法是與IDE集成。為此,除了必要的運行環境搭建配置,您還需要幾個jar文件,例如
Junit-4.1.0.jar,Jbehave-core-3.8.jar,Commons-lang-2.4.jar,Paranamer-2.5.jar,Freemarker-2.3.9.jar,Org.apacje.commons.io.jar,Org.apache.commons.collections.jar,Plexus-utils-1.1.jar
JBehave的優缺點
像所有其他BDD測試框架一樣,JBehave在許多方面也具有優勢。
- 使規范相似的不同項目的不同開發團隊之間更好地協調,可以達到行為驅動開發的最重要目的。
- 由於規范相似,因此項目經理和利益相關者可以更好地了解開發團隊和質量檢查團隊的輸出。
- 由於JBehave具有詳細的邏輯推理和思考功能,因此產品具有更好的可靠性。
- JBehave使用半正式語言,並且還具助於在團隊結構中保持一致的行為的功能。
跟其他任何BDD測試工具一樣,JBehave只有一個缺點。
- BDD測試工具的成功主要取決於項目中不同成員,利益相關者,開發人員,測試人員以及組織管理層之間的溝通。缺乏溝通可能會導致無法及時發現和快速解決的問題,進而可能導致導致應用程序發生錯誤或者與實際業務需求相悖,最終導致所有各方互相指責(甩鍋)。
JBehave是適合您的最佳Java測試框架嗎?
JBehave的工作方式與Serenity相同。但是,如果您打算提高自動驗收測試的效率,則最好將Serenity與JBehave集成在一起,以利用更好的測試體驗。這是因為Serenity的核心概念基於BDD開發,並且還使用戶能夠編寫功能強大且豐富的測試報告。
Selenide
Selenide基於Selenium的測試框架,並由Selenium提供技術支持,是一種流行的工具,用於精確和更加直觀的UI測試用例。對現代Web技術(如Ajax)進行測試具有一定的復雜性,例如超時、等待和斷言等等。WebDriver是用於UI測試的流行工具,但缺少處理超時的功能。Selenide以簡單的方式處理所有這些問題。另外,它更容易掌握和學習。只需要做的只是專注於業務邏輯,僅需執行幾行簡單的代碼即可完成您的工作。
Selenide的前提條件是什么?
Selenide的安裝非常簡單。如果使用的是Maven,則需要在pom.xml
文件中添加以下幾行。
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<version>5.1.0</version>
<scope>test</scope>
</dependency>
Selenide的優缺點
在服務器端使用Java的應用程序的前端層中,測試人員面臨的最常見問題是超時。您編寫的測試用例目前可能工作正常,但是幾天后,也許一些Ajax請求將比現在花費更多的時間,或者某些Javascript的運行速度會變慢。另外,您的系統可能同時運行另一個進程,從而導致測試用例失敗。更不幸的是,您可能需要花費數天的時間才能找出這些問題的根源。硒化物可以幫助您
- 簡潔的測試用例編寫過程消除了超時問題。
- 支持使用AngularJS開發的應用程序的測試
- 減少了傳統Selenium工具使用的大多數調用函數。
到目前為止,我們還沒有發現使用Selenide明顯缺點,大概唯一勉強稱作缺點的就是語法中各種符號。
下面放一個Demo大家就懂了:
@Test
public void userCanLoginByUsername() {
open("/login");
$(By.name("user.name")).setValue("johny");
$("#submit").click();
$(".loading_progress").should(disappear); // Waits until element disappears
$("#username").shouldHave(text("Hello, Johny!")); // Waits until element gets text
}
網上有人發現這個Demo跑不起來,其實是缺少了必要的初始化步驟,如下:
Configuration.browser = "Chrome";
Configuration.baseUrl="https://www.baidu.com";
Selenide是最適合您的Java測試框架嗎?
對於UI測試,除了Selenide的父框架Selenium WebDriver之外,沒有更好的基於Java的框架。顯然,WebDriver無法解決由Ajax超時,JavaScript運行緩慢或任何需要花費時間加載的動態內容引起的問題。為了克服問題,我們先前在測試案例中使用了wait_until
或sleep
方法。使用Selenide,我們不再需要考慮那些問題。僅關注業務邏輯,測試用例就可以很好地實現其目的。
Spock
Spock是一個從JUnit派生的測試自動化框架,用Groovy編寫,允許您在JVM(Java虛擬機)上執行DDT(數據驅動測試)。它提供了對JVM支持的所有語言的兼容性。Spock提供的UI與任何其他Java測試框架相比都非常出色。代碼的可讀性和文檔簡潔明了,並且可以解釋簡單的句子,使其成為非常方便的Java測試框架。
Spock作為Java測試框架的優勢
Spock的優點:
- 出色的可讀性,提供與普通英語句子的兼容性。
- Spock使模擬和存根比以往任何時候都容易。而且,兩者都是內置的。
- 參數化更短,更清晰。
- 提供周圍的環境,使查找故障原因更加容易。
- 富有表現力和簡單的DSL(特定於域的語言)。
Spock的缺點:
- 您需要對Groovy有基本的了解。
- 如果您不熟悉Spock,則可能會覺得該框架有點不方便,但是一旦精通它,就不會使用其他Java測試框架。
- 對於其他基於Java的測試框架的高級語法兼容性較差(比如Mockito)
Spock是最適合您的Java測試框架嗎?
Spock擁有如此多的優點,相信Spock會成為BDD(行為驅動開發)的最佳Java測試框架,因為它使用簡單,直觀的UI和強大的DSL。如果碰巧你的項目是基於JVM的應用程序那他絕對是你的不二選擇。
下面是之前寫過的三篇spock的文章,點擊查看詳情
總結
在當前的敏捷時代,開發人員還需要參與測試。不必人人都是專家,但是至少應該具備編寫自動驗證代碼的測試用例的基本知識。本文介紹了幾種工具,這些工具為應用程序的UI測試,單元測試和BDD測試提供了開發人員的首選。如果真的想在工作表現突出,並希望成為更專業開發人員和測試人員,那么上面提到的工具將對日常工作絕對有所幫助。
- 鄭重聲明:文章禁止第三方(騰訊雲除外)轉載、發表,事情原委測試窩,首頁抄我七篇原創還拉黑,你們的良心不會痛嗎?
技術類文章精選
- java一行代碼打印心形
- Linux性能監控軟件netdata中文漢化版
- 接口測試代碼覆蓋率(jacoco)方案分享
- 性能測試框架第二版
- 如何在Linux命令行界面愉快進行性能測試
- 圖解HTTP腦圖
- 將swagger文檔自動變成測試代碼
- 五行代碼構建靜態博客
- 基於java的直線型接口測試框架初探