在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    JUnit VS TestNG

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

    單元測試

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

    單元測試涉及測試軟件產(chǎn)品中最微小的代碼。目的是檢查代碼的每個(gè)組件的質(zhì)量是否按預(yù)期執(zhí)行。它在開發(fā)階段執(zhí)行。隔離一段代碼以確保其有效性和準(zhǔn)確性。代碼的單個(gè)組件可以是函數(shù)、模塊、對(duì)象或方法。單元測試總是在集成測試之前進(jìn)行。它有助于在應(yīng)用程序開發(fā)生命周期的早期階段發(fā)現(xiàn)缺陷。開發(fā)人員使用不同的單元測試框架來創(chuàng)建單元測試的自動(dòng)化測試用例。市場上有不同的工具可用于執(zhí)行單元測試,如 JUnit、NUnit、PHPUnit、JMockit等。

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

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

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

    TestNG 和 JUnit 的區(qū)別

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

    測試套件

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

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

    而在 JUnit 中,使用 @RunWith 和 @Suite 等注釋,如下面的代碼片段所示。兩個(gè)類 JUnit1 和 JUnit2 是使用注解 @Suite 編寫的。

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

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

    注釋

    FEATURE JUNIT 5 TESTNG 將該方法標(biāo)記為測試方法 @Test @Test 它在類的第一個(gè)測試方法之前執(zhí)行 @BeforeAll @BeforeClass 它在當(dāng)前類的所有測試方法都執(zhí)行完之后執(zhí)行 @AfterAll @AfterClass 它在每個(gè)測試方法之前執(zhí)行 @BeforeEach @BeforeMethod 在每個(gè)測試方法之后執(zhí)行 @AfterEach @AfterMethod 它在套件中的所有測試運(yùn)行之前執(zhí)行 NA @BeforeSuite 它在套件中的所有測試都運(yùn)行后執(zhí)行 NA @AfterSuite 測試前執(zhí)行 NA @BeforeTest 測試后執(zhí)行 NA @AfterTest 在任何這些組的第一個(gè)測試方法之前執(zhí)行 NA @BeforeGroups 在任何這些組的第一個(gè)測試方法之后執(zhí)行 NA @AfterGroups 忽略測試 @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中沒有這樣的限制。

    用例管理

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

    分組測試

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

    @Test(groups={“groupname1”,..,})

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

    忽略測試

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

    @Ignorepublic void method1() { //code}

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

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

    參數(shù)化

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

    依賴測試

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

    @Test(dependsOnMethods = {“Login”})//code

    異常測試

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

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

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

    超時(shí)測試

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

    JUnit:

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

    TestNG:

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

    結(jié)論

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

    Fun·BUG挖掘機(jī)·性能征服者·頭頂鍋蓋·Tester

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月23日 12:13
    下一篇 2022年6月23日 12:13

    相關(guān)推薦

    • 分享4條發(fā)微商朋友圈的方法(微商朋友圈應(yīng)該怎么發(fā))

      對(duì)于微商朋友來說,朋友圈的重要性不言而喻了。 那么微商的朋友圈到底該怎么發(fā)呢? 為什么同樣是經(jīng)營一個(gè)朋友圈,有的微商看起來逼格滿滿,實(shí)際效果也不錯(cuò);而有的卻動(dòng)都不動(dòng)就被屏蔽甚至拉黑…

      2022年11月27日
    • 短視頻策劃內(nèi)容的3個(gè)要點(diǎn)(短視頻策劃內(nèi)容怎么做)

      短視頻在制作時(shí),內(nèi)容框架非常重要。如果直奔主題,然后結(jié)束,聚卓告訴你,這樣的短視頻已經(jīng)過時(shí)了?,F(xiàn)在的短視頻需要框架的,但不是任何框架,它需要一種易于理解和消化的框架。而且,現(xiàn)在大多…

      2022年11月27日
    • 存儲(chǔ)過程語法(sql server存儲(chǔ)過程語法)

      今天小編給各位分享存儲(chǔ)過程語法的知識(shí),其中也會(huì)對(duì)sql server存儲(chǔ)過程語法進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧! oracle存儲(chǔ)過程基本語法…

      2022年11月26日
    • 全民K歌升級(jí)新版本7.0之后,有哪些隱藏功能?

      作者:高百烈來源:知乎 這個(gè)功能,舊版并沒有,要升級(jí)到全新的全民K歌7.0版本才能發(fā)現(xiàn)。 作為朋友圈當(dāng)代K歌之王,我費(fèi)了不少功夫才搶到內(nèi)測版本。有一說一,全民K歌的路子真的很野,新…

      2022年11月25日
    • 《寶可夢朱紫》夢特性怎么獲得?隱藏特性獲取方法推薦

      寶可夢朱紫里有很多寶可夢都是擁有夢特性會(huì)變強(qiáng)的寶可夢,很多玩家不知道夢特性怎么獲得,下面就給大家?guī)韺毧蓧糁熳想[藏特性獲取方法推薦,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 …

      2022年11月25日
    • 《寶可夢朱紫》奇魯莉安怎么進(jìn)化?奇魯莉安進(jìn)化方法分享

      寶可夢朱紫中的奇魯莉安要怎么進(jìn)化呢?很多玩家都不知道,下面就給大家?guī)韺毧蓧糁熳掀骠斃虬策M(jìn)化方法分享,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 奇魯莉安進(jìn)化方法分享 奇魯莉安…

      2022年11月25日
    • 上手Reno8 Pro體驗(yàn)跨屏互聯(lián) 實(shí)在太方便!

      11月已經(jīng)來到了月底,在手機(jī)品牌又要推出新一年度的新品手機(jī)之前,我們來點(diǎn)評(píng)一下今年令人驚喜的產(chǎn)品。如OPPO的Reno8 Pro系列,該系列搭載雙芯影像配置獲得了很多消費(fèi)者的認(rèn)可?!?/p>

      2022年11月25日
    • 銳龍97900x參數(shù)規(guī)格跑分評(píng)測 銳龍97900x屬于什么檔次

      銳龍9 7900X是銳龍7000系列處理器中性能頂尖的型號(hào)之一,它采用了這一代標(biāo)配的zen4架構(gòu)和5nm制程工藝,那么它具體的參數(shù)跑分如何,在電腦上世紀(jì)發(fā)揮怎么樣呢,下面就來看看銳…

      2022年11月24日
    • 華為手機(jī)怎么掃一掃連接wifi(手機(jī)掃一掃在哪里)

      手機(jī)瀏覽器可以用來瀏覽網(wǎng)頁、看新聞、看視頻,還能搜索問題,在我們的工作生活中瀏覽器占據(jù)著非常重要的位置。手機(jī)瀏覽器除了這些作用,其實(shí)它隱藏著其他功能,比如:掃一掃。掃一掃可不只是用…

      2022年11月24日
    • 三星手機(jī)截屏(三星手機(jī)截屏圖片在哪個(gè)文件夾)

      本文主要講的是三星手機(jī)截屏,以及和三星手機(jī)截屏圖片在哪個(gè)文件夾相關(guān)的知識(shí),如果覺得本文對(duì)您有所幫助,不要忘了將本文分享給朋友。 三星手機(jī)截屏怎么截 三星手機(jī)四種截屏方法 1、普通截…

      2022年11月24日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息