亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中TestNG與JUnit測試框架實例分析

發布時間:2022-02-28 10:02:26 來源:億速云 閱讀:154 作者:iii 欄目:開發技術

這篇文章主要介紹“Java中TestNG與JUnit測試框架實例分析”,在日常操作中,相信很多人在Java中TestNG與JUnit測試框架實例分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java中TestNG與JUnit測試框架實例分析”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

什么是單元測試?

測試不是單一的活動,而是涵蓋各種測試場景。它以不同的方式進行分類,其中一種是基于測試級別,例如集成、單元和系統測試。基于目標的應用程序測試涵蓋移動測試、Web 和混合測試。

單元測試涉及測試軟件產品中最微小的代碼。目的是檢查代碼的每個組件的質量是否按預期執行。它在開發階段執行。一段代碼被隔離以確保其有效性和準確性。代碼的單個組件可以是函數、模塊、對象或方法。考慮任何軟件工程;單元測試總是在集成測試之前先執行。它有助于在應用程序開發生命周期的早期階段識別和解決錯誤。開發人員使用不同的單元測試框架來創建單元測試的自動化測試用例。市場上有不同的工具可以執行單元測試,如 JUnitNUnitPHPUnitJMockit 等。

公司使用不同的單元測試框架來管理測試成本,提高速度、效率和準確性。在Selenium – Java 中,JUnit TestNG 是最受歡迎的單元測試框架。 

 JUnit  于 1997 年作為基于 Java 的開源單元測試框架推出。它是 XUnit 的一部分,XUnit 是單元測試框架系列的代表。它允許開發人員編寫和運行可重復的測試。它與 Selenium 一起廣泛用于編寫 Web 自動化測試。其最新的程序員友好版本是 JUnit 5,它為 Java 虛擬機上基于開發人員的測試創建了一個強大的基礎。 

TestNG  也是一個基于 Java 的單元測試框架,于 2007 年在 JUnit 的同一行上開發,但具有新的和改進的功能。這些新功能包括靈活的測試配置、參數支持、數據驅動測試、注釋、各種集成等等。TestNG 執行單元、端到端和集成測試。TestNG 生成報告,幫助開發人員了解所有測試用例的通過、失敗和跳過狀態。借助 Selenium 中的 TestNG,您可以使用estng-failed.xml 文件單獨運行失敗的測試,以僅運行失敗的測試用例。根據 mvnrepository.com,截至 2021 年 2 月,TestNG 的最新版本是 7.4.0

必須了解 TestNG JUnit 測試框架之間的區別,以確定這兩個自動化測試框架中的哪一個最適合您的項目。

TestNG 和 JUnit 的區別 

TestNGJUnit雖然沒有明顯區別,但都是最頂級的基于Java的自動化框架,各有優缺點。盡管如此,讓我們嘗試了解 Selenium WebDriverJUnit TestNG 框架之間的主要區別:

1、測試套件

測試套件由一組 JUnit 和 TestNG 測試組成,允許您同時執行測試。早期版本的 JUnit 中不允許使用測試套件功能,但它是在 JUnit 5 中引入的,而該功能始終存在于 TestNG 中。盡管兩者都有測試套件,但它們對每個套件執行測試的方式存在關鍵差異。讓我們看一下展示測試套件如何在兩個框架中運行的代碼片段。

TestNG中的測試套件從 XML 文件運行:

<suite name=”TestSuite”>
    <test name=”Demo”>
        <classes>
            <class name=”com.fsecure.demo.testng.TestNGTest1″ />
            <class name=”com.fsecure.demo.testng.TestNGTest2″ />
        </classes>
    </test>
</suite>

而在 JUnit 中,使用了 @RunWith@Suite 之類的注釋,如下面的代碼片段所示。兩個類 JUnit 1 和 2 是使用注解@Suite 編寫的。

@RunWith(Suite.class)
@Suite.SuiteClasses({
   JUnit1.class,
   JUnit2.class
})
public class JunitTest5 {
   //code
}

2、 注釋

對于測試人員來說,使用 TestNG 更容易,因為它為他們提供了多個選項來使用測試套件。例如,可以通過將類捆綁成組來執行測試套件。

JUnit 和 TestNG 框架中使用的注釋的工作方式相似,只是名稱略有不同。下表顯示了 JUnit 和 TestNG 注釋的差異。

特征聯隊 5測試
將方法標記為測試方法@Test@Test
它在類的第一個測試方法之前執行@BeforeAll@BeforeClass
它在當前類的所有測試方法都執行完畢后執行。@AfterAll@AfterClass
它在每個測試方法之前執行@BeforeEach@BeforeMethod
在每個測試方法之后執行@AfterEach@AfterMethod
它在套件中的所有測試運行之前執行。不適用@BeforeSuite
它在套件中的所有測試都運行后執行。不適用@AfterSuite
在測試之前執行。不適用@BeforeTest
測試后執行。不適用@AfterTest
在任何這些組的第一個測試方法之前執行。不適用@BeforeGroups
在任何這些組的第一個測試方法之后執行。不適用@AfterGroups
忽略測試@Disabled(在 JUnit4 中是 @ignore)@Test(Enable=false)
預期異常@Test(expected=ArithmeticException0.class )@Test( expectedException
=ArithmeticException.class )
暫停@TimeOut@Test(timeout = 1000)

在 JUnit 4 中,@BeforeClass@AfterClass 方法被認為是靜態的,而在 TestNG 中沒有這樣的限制。

Java中TestNG與JUnit測試框架實例分析

JUnit

Java中TestNG與JUnit測試框架實例分析

TestNG

TestNG vs. JUnit——測試用例管理

測試執行的管理是一項重要任務;與 JUnit 相比,TestNG 使此任務更容易。TestNG 在以下方面的幫助下實現了這一點:

  • 分組測試用例:這是一項僅適用于 TestNG 的功能。 它涉及通過創建多個組來執行任務。每個都包含各種類,并且可以在單獨的組中運行測試,而不是運行孤立的測試。它使用@Test 注釋中的參數。

@Test(groups={"groupname1",<"group2">..,<"groupN">})

忽略測試:不需要執行來自龐大測試套件的某些測試,尤其是當您只想測試特定功能時。 此功能闡明是否應忽略或考慮特定的單元測試。JUnit 和 TestNG 都配備了此功能,以及前面討論的所有注釋。在 JUnit 中,此功能使用 @ignore 注解:在 TestNG 中,組包含在“groups”標簽下的 XML 文件中,可以在 <test> 或 <suite> 標簽下輕松識別。

@Ignore
public void method1()
{  
     //code
}

而在 TestNG 中,它使用 @Test( enabled = false ) 注釋運行。

@Test(enabled=false)
public void TestWithException()
{ 
    //code
}
  • 參數化:這意味著在每次測試執行時填充值/參數。結果,我們得到了改進的代碼可重用性。它是數據驅動的測試,可減少代碼長度并提高其可讀性。TestNG 與 JUnit 提供此功能的方式有所不同。TestNG 有一個簡單的方法來修復測試用例中的參數。它利用@Parameter 注釋并將參數添加到給定的測試方法。“瀏覽器”的值在 XML 文件(例如 testng.xml)中聲明,而 JUnit 使用 @ParameterizedTest 注釋。

  • 依賴測試:此功能顯示一種測試方法何時依賴于另一種測試方法。JUnit 不支持此功能,而 TestNG 支持。由于 TestNG 是最新的,它支持多種類型的測試。在TestNG中,依賴方法使用@DependsOnMethods注解。

@Test(dependsOnMethods = {"LoginBrowser"})
//code
  • 異常測試:此功能驗證在測試執行期間遇到錯誤時要使用的異常。TestNG 和 JUnit 都提供此功能,但處理異常的方式略有不同。TestNG在@Test 注釋中使用 expectedException 參數 

在 JUnit 中,assertThrows API 用于異常處理

@Test(expectedExceptions = ArithmeticException.class)
public void DivideByZero() {
  int i = 10/0;
}
  • 超時測試:這允許測試執行中的超時功能設置時間限制,當超過時,測試自動失敗。TestNG 和 JUnit 都以相同的語法提供此功能。

@Test(expected = ArithmeticException.class)
public void DivideByZero() {
  int i = 10/0;
}

TestNG 與 JUnit – 并行測試執行

最有效的測試方法之一是執行并行測試。在基于云的 Selenium Grid 上同時而不按順序運行測試比在本地 Selenium Grid 上執行它支持更多的并行性。TestNG 和 JUnit 5 都支持并行測試。

TestNG 與 JUnit – 報告

報告是測試中分析測試結果的重要要求。TestNG 默認生成 HTML 和索引報告。JUnit 不會為測試執行創建任何此類報告,而是以 XML 文件格式提供數據。你必須使用帶有 JUnit 的附加外部插件來創建報告。

TestNG 與 JUnit – 社區支持

TestNG 和 JUnit 都是各自社區中的流行框架。JUnit 是在 TestNG 之前引入的,這就是為什么它具有相對更廣泛和更強大的社區支持。TestNG 正在逐漸迎頭趕上,其用戶群也每天以更快的速度增長。

到此,關于“Java中TestNG與JUnit測試框架實例分析”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉峪关市| 若尔盖县| 临澧县| 鄄城县| 马鞍山市| 外汇| 阳东县| 曲沃县| 西昌市| 扎兰屯市| 崇信县| 灵璧县| 云南省| 新巴尔虎左旗| 绥德县| 敦化市| 马尔康县| 锡林浩特市| 利川市| 六枝特区| 贵州省| 元氏县| 北安市| 繁昌县| 兴义市| 财经| 布拖县| 共和县| 凯里市| 乐昌市| 勃利县| 甘德县| 安阳县| 青龙| 灌阳县| 枣庄市| 禄劝| 汝城县| 柳林县| 博罗县| 贵德县|