亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

測(cè)試框架JUnit VS TestNG對(duì)比分析

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

引言

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

單元測(cè)試

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

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

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

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

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

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

TestNG 和 JUnit 的區(qū)別

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

測(cè)試套件

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

TestNG 中的測(cè)試套件從XML 文件運(yùn)行:

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

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

使用 TestNG 對(duì)測(cè)試人員來(lái)說(shuō)更容易,因?yàn)樗鼮樗麄兲峁┝耸褂脺y(cè)試套件的多種選擇。例如,可以通過(guò)將類(lèi)捆綁到組中來(lái)執(zhí)行測(cè)試套件。

注釋

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

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

用例管理

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

分組測(cè)試

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

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

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

忽略測(cè)試

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

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

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

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

參數(shù)化

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

依賴測(cè)試

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

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

異常測(cè)試

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

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

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

超時(shí)測(cè)試

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

JUnit:

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

TestNG:

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

結(jié)論

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

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

相關(guān)文章

  • 好玩的vbs微信小程序之語(yǔ)言播報(bào)功能

    好玩的vbs微信小程序之語(yǔ)言播報(bào)功能

    這篇文章主要介紹了好玩的vbs微信小程序之語(yǔ)言播報(bào)功能,非常好玩有趣,需要的朋友跟隨小編一起看看吧
    2019-09-09
  • Hadoop 文件系統(tǒng)命令行基礎(chǔ)詳解

    Hadoop 文件系統(tǒng)命令行基礎(chǔ)詳解

    這篇文章主要介紹了Hadoop 文件系統(tǒng)命令行基礎(chǔ),Hadoop 命令行最常用指令在文章給大家一一羅列出 ,需要的朋友可以參考下
    2019-07-07
  • 詳解ansible批量管理服務(wù)

    詳解ansible批量管理服務(wù)

    這篇文章主要介紹了ansible批量管理服務(wù)的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 圖像檢索之IF-IDF,RootSift,VLAD

    圖像檢索之IF-IDF,RootSift,VLAD

    TF-IDF是一種用于信息檢索的常用加權(quán)技術(shù),在文本檢索中,用以評(píng)估詞語(yǔ)對(duì)于一個(gè)文件數(shù)據(jù)庫(kù)中的其中一份文件的重要程度,本文給大家介紹下圖像檢索之IF-IDF,RootSift,VLAD的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-12-12
  • 詳解inet_pton()和inet_ntop()函數(shù)

    詳解inet_pton()和inet_ntop()函數(shù)

    這篇文章主要介紹了inet_pton()和inet_ntop()函數(shù),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • RPC、RMI、SOAP的區(qū)別詳解

    RPC、RMI、SOAP的區(qū)別詳解

    這篇文章主要介紹了RPC、RMI、SOAP的區(qū)別詳解,本文還同時(shí)講解了RPC、SOAP、WSDL的關(guān)系,需要的朋友可以參考下
    2015-07-07
  • Git Bash的使用小結(jié)

    Git Bash的使用小結(jié)

    本文主要介紹了Git Bash的使用小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • 程序員的新年祝福 Happy New Year

    程序員的新年祝福 Happy New Year

    再見(jiàn),2017,你好,2018!祝大家在新的一年里,快快樂(lè)樂(lè),編程技術(shù)更上一層樓,元旦快樂(lè)
    2018-01-01
  • 字符編碼詳解(基礎(chǔ))

    字符編碼詳解(基礎(chǔ))

    字符編碼問(wèn)題, 對(duì)于一個(gè)在偉大天朝的程序員來(lái)說(shuō), 幾乎不可能遇不到, 從我剛開(kāi)始接觸Coding到現(xiàn)在, 亂碼, 編碼轉(zhuǎn)換問(wèn)題就好像一直沒(méi)有停息過(guò).
    2009-09-09
  • 一文助你搞懂參數(shù)傳遞原理解析(java、go、python、c++)

    一文助你搞懂參數(shù)傳遞原理解析(java、go、python、c++)

    這篇文章主要介紹了多種語(yǔ)言參數(shù)傳遞原理解析(java、go、python、c++),本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01

最新評(píng)論