最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

測試框架JUnit VS TestNG對比分析

 更新時間:2022年07月23日 16:43:07   作者:FunTester  
這篇文章主要為大家介紹了測試框架JUnit VS TestNG對比分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

軟件開發(fā)經(jīng)歷了許多階段,如需求收集和分析、設(shè)計、軟件開發(fā)、測試和發(fā)布。測試是 SDLC 不可或缺的一部分,單元測試是一種可靠的測試類型。像 JUnit 和 TestNG 這樣優(yōu)秀的單元測試框架已經(jīng)成為主流選擇,但是關(guān)于 TestNG 與 JUnit 的差異的爭論一直存在。

單元測試

測試不是單一的活動,而是涵蓋各種測試場景。它以不同的方式分類,其中一種是基于測試級別,例如集成、單元和系統(tǒng)測試。

單元測試涉及測試軟件產(chǎn)品中最微小的代碼。目的是檢查代碼的每個組件的質(zhì)量是否按預(yù)期執(zhí)行。它在開發(fā)階段執(zhí)行。隔離一段代碼以確保其有效性和準(zhǔn)確性。代碼的單個組件可以是函數(shù)、模塊、對象或方法。單元測試總是在集成測試之前進(jìn)行。它有助于在應(yīng)用程序開發(fā)生命周期的早期階段發(fā)現(xiàn)缺陷。

開發(fā)人員使用不同的單元測試框架來創(chuàng)建單元測試的自動化測試用例。市場上有不同的工具可用于執(zhí)行單元測試,如 JUnit、NUnit、PHPUnit、JMockit 等。

JUnit 于 1997 年作為一個開源的基于 Java 的單元測試框架推出。它是 XUnit 的一部分,它是單元測試框架家族的代表。它允許開發(fā)人員編寫和運行可重復(fù)的測試。

TestNG 是一個基于 Java 的單元測試框架,具有新的和改進(jìn)的功能。這些新功能包括靈活的測試配置、參數(shù)支持、數(shù)據(jù)驅(qū)動測試、注釋、各種集成等等。TestNG 執(zhí)行單元、端到端和集成測試。TestNG 生成報告,幫助開發(fā)人員了解所有測試用例的通過、失敗和跳過狀態(tài)。

了解 TestNG 和 JUnit 測試框架之間的區(qū)別,有助于選擇最適合單元測試框架。

TestNG 和 JUnit 的區(qū)別

雖然 TestNG 和 JUnit 都是最頂級的基于 Java 的自動化框架,并且各有優(yōu)缺點。下面分享 JUnit 和 TestNG 框架之間的主要差別:

測試套件

測試套件由一組測試用例組成,允許同時執(zhí)行測試。測試套件功能在 JUnit 的早期版本中是不允許的,但在 JUnit 5 中引入,而 TestNG 早早地就支持了該功能。盡管兩者都有測試套件,但它們在每個測試套件上執(zhí)行測試的方式存在關(guān)鍵差異。讓我們看一下顯示測試套件如何在兩個框架中運行的代碼片段。

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 等注釋,如下面的代碼片段所示。兩個類 JUnit1 和 JUnit2 是使用注解 @Suite 編寫的。

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

使用 TestNG 對測試人員來說更容易,因為它為他們提供了使用測試套件的多種選擇。例如,可以通過將類捆綁到組中來執(zhí)行測試套件。

注釋

FEATUREJUNIT 5TESTNG
將該方法標(biāo)記為測試方法@Test@Test
它在類的第一個測試方法之前執(zhí)行@BeforeAll@BeforeClass
它在當(dāng)前類的所有測試方法都執(zhí)行完之后執(zhí)行@AfterAll@AfterClass
它在每個測試方法之前執(zhí)行@BeforeEach@BeforeMethod
在每個測試方法之后執(zhí)行@AfterEach@AfterMethod
它在套件中的所有測試運行之前執(zhí)行NA@BeforeSuite
它在套件中的所有測試都運行后執(zhí)行NA@AfterSuite
測試前執(zhí)行NA@BeforeTest
測試后執(zhí)行NA@AfterTest
在任何這些組的第一個測試方法之前執(zhí)行NA@BeforeGroups
在任何這些組的第一個測試方法之后執(zhí)行NA@AfterGroups
忽略測試@Disabled (In JUnit4 it is @ignore)@Test(Enable=false)
預(yù)期異常@Test(expected=Arithmetic@Test(expectedException=Arithmetic Exception.class)
超時@Timeout@Test(timeout = 1000)

PS:在 JUnit 4 中,@BeforeClass@AfterClass方法被認(rèn)為是靜態(tài)的,而在TestNG中沒有這樣的限制。

用例管理

管理測試執(zhí)行是一項重要任務(wù);與 JUnit 相比,TestNG 使這項任務(wù)更容易。

分組測試

這個功能目前只有 TestNG 支持。 它涉及通過創(chuàng)建多個組來執(zhí)行任務(wù)。每個都包含各種測試類,并且可以在單獨的組中運行測試,而不是運行孤立的測試。它使用@Test注解中的參數(shù)。

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

在 TestNG 中,可以在<test><suite>標(biāo)記下輕松識別。

忽略測試

不需要執(zhí)行來自大型測試套件的某些測試,尤其是只想測試特定功能時。此功能包含了是否應(yīng)忽略或考慮特定的單元測試。JUnit 和 TestNG 都配備了這個特性,以及前面討論的所有注釋。在 JUnit 中,此功能使用@ignore注解:

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

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

@Test(enabled=false)
public void TestWithException(){  
    //code
}

參數(shù)化

參數(shù)化可以理解是數(shù)據(jù)驅(qū)動的測試,可以減少代碼量并提高其可讀性。TestNG 與 JUnit 提供此功能的方式有所不同。TestNG 有一種簡單的方法來修復(fù)測試用例中的參數(shù)。它利用@Parameter注釋并將參數(shù)添加到給定的測試方法。browser的值在 XML 文件(例如testng.xml)中說明,而 JUnit 使用@ParameterizedTest注釋。

依賴測試

這個功能表示一種測試方法何時依賴于另一種測試方法。JUnit 目前不支持此功能。TestNG 支持多種類型的測試。在 TestNG 中,依賴方法使用@DependsOnMethods注解。

@Test(dependsOnMethods = {"Login"})
//code

異常測試

此功能驗證在測試執(zhí)行期間遇到錯誤時要使用的異常。TestNG 和 JUnit 都支持此功能,但處理異常的方式略有不同。TestNG 在@Test注解中使用了expectedException參數(shù) 。

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

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

超時測試

這個功能指測試執(zhí)行中的超時功能,該功能設(shè)置時間限制,當(dāng)超過該時間限制時,測試會自動失敗。TestNG 和 JUnit 都以相同的語法提供此功能。

JUnit:

@Test(timeout = 1000)  
public void method1() {  
      // do nothing
}

TestNG:

@Test(timeOut = 1000)
public void testThisShouldFail() {
        // do nothing
}

結(jié)論

許多測試框架都支持自動化測試,具體取決于測試的目標(biāo)。TestNG 和 JUnit 都是自動化單元測試領(lǐng)域最受信任的框架。TestNG 克服了 JUnit 的諸多不便,簡化了測試人員的工作。使用 TestNG,可以執(zhí)行單元測試、集成測試和端到端測試,而 JUnit 僅涵蓋單元測試。

以上就是測試框架JUnit VS TestNG對比分析的詳細(xì)內(nèi)容,更多關(guān)于測試框架JUnit對比TestNG的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • kali2021.4a使用virtualenv安裝angr的詳細(xì)過程

    kali2021.4a使用virtualenv安裝angr的詳細(xì)過程

    在Linux中安裝各種依賴python的軟件時,最頭疼的問題之一就是各個軟件的python版本不匹配的問題,angr依賴python3,因此考慮使用virtualenv來安裝angr,需要的朋友可以參考下
    2022-11-11
  • 淺談vscode中task.json和launch.json的關(guān)系

    淺談vscode中task.json和launch.json的關(guān)系

    本文主要介紹了淺談vscode中task.json和launch.json的關(guān)系,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • 鴻蒙HarmonyOS開發(fā):Navigation路由導(dǎo)航功能和實踐

    鴻蒙HarmonyOS開發(fā):Navigation路由導(dǎo)航功能和實踐

    Navigation作為HarmonyOS?NEXT中推薦的路由管理方案,以其強大的功能和靈活性,為開發(fā)者提供了高效的頁面路由管理能力,本文將深入探討基于Navigation的路由管理機(jī)制,從原理到實踐,帶您一步步領(lǐng)略Navigation組件的強大功能和靈活應(yīng)用,
    2024-08-08
  • Vscode中l(wèi)aunch.json與tasks.json文件的詳細(xì)介紹

    Vscode中l(wèi)aunch.json與tasks.json文件的詳細(xì)介紹

    在VSCode中,launch.json和tasks.json作為兩個重要的配置文件,能夠幫助開發(fā)者實現(xiàn)調(diào)試和任務(wù)運行的自動化配置,下面這篇文章主要給大家介紹了關(guān)于Vscode中l(wèi)aunch.json與tasks.json文件的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • 關(guān)于前端數(shù)據(jù)Fail?to?load?response?data問題的解決方法

    關(guān)于前端數(shù)據(jù)Fail?to?load?response?data問題的解決方法

    這篇文章主要給大家介紹了關(guān)于前端數(shù)據(jù)Fail?to?load?response?data問題的解決方法,Fail to load respond data"是一個英文短語,意思是加載響應(yīng)數(shù)據(jù)失敗,需要的朋友可以參考下
    2023-12-12
  • DeepSeek R1本地化部署 Ollama + Chatbox 如何打造最強 AI 工具

    DeepSeek R1本地化部署 Ollama + Chatbox 如

    文章介紹了如何在本地部署DeepSeekR1模型并使用Chatbox進(jìn)行交互,使用戶能夠擁有強大的AI工具,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • SecureCRT的下載、安裝詳細(xì)過程

    SecureCRT的下載、安裝詳細(xì)過程

    SecureCRT是一款支持SSH的終端仿真程序,在今后的工作和學(xué)習(xí)中會經(jīng)常的用到用來連接linux服務(wù)器。本文重點給大家介紹SecureCRT的下載、安裝詳細(xì)過程,感興趣的朋友一起看看吧
    2021-11-11
  • 使用MobaXterm連接到遠(yuǎn)程服務(wù)器的圖文教程

    使用MobaXterm連接到遠(yuǎn)程服務(wù)器的圖文教程

    這篇文章主要為大家詳細(xì)為大家介紹了如何使用MobaXterm連接到遠(yuǎn)程服務(wù)器,文中通過圖文進(jìn)行了詳細(xì)的講解,有需要的小伙伴可以參考一下
    2023-09-09
  • 如何集成Elasticsearch到django restful

    如何集成Elasticsearch到django restful

    在Django項目中集成Elasticsearch可通過Haystack實現(xiàn),Haystack作為Django插件提供搜索接口,Elasticsearch作為后端搜索引擎存儲檢索數(shù)據(jù),Haystack支持多種搜索引擎,易于切換且不需改動代碼,本文給大家介紹如何集成Elasticsearch到django restful,感興趣的朋友一起看看吧
    2024-09-09
  • NoVNC以Web方式交付VNC遠(yuǎn)程連接的方法

    NoVNC以Web方式交付VNC遠(yuǎn)程連接的方法

    noVNC是一個 HTML5 VNC 客戶端,采用 HTML 5 WebSockets, Canvas 和 JavaScript 實現(xiàn),這篇文章主要介紹了NoVNC以Web方式交付VNC遠(yuǎn)程連接的方法,感興趣的朋友一起看看吧
    2021-09-09

最新評論

陆良县| 深圳市| 金湖县| 皋兰县| 青川县| 秦皇岛市| 得荣县| 深水埗区| 霍邱县| 卢氏县| 雅安市| 青川县| 江川县| 渭南市| 广河县| 奉新县| 龙里县| 广东省| 湟中县| 科尔| 三亚市| 巨鹿县| 临漳县| 台南市| 扎囊县| 礼泉县| 天柱县| 汕头市| 津南区| 怀集县| 涿鹿县| 雷州市| 高邑县| 弥勒县| 阿拉善盟| 泸定县| 邢台市| 长葛市| 铜鼓县| 平安县| 射阳县|