最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

Junit 單元測試框架基礎(chǔ)知識(shí)

2023-05-12 14:10 作者:大丫頭胖  | 我要投稿

1. Junit 簡介

Junit 是 Java 編程語言的 單元測試 框架,用于編寫和可重復(fù)運(yùn)行的自動(dòng)化測試。


2. 技術(shù)參數(shù)選取范圍


3. Junit 基礎(chǔ)知識(shí)

3.1 Junit 基礎(chǔ)注解

單元測試題目中 @Test、@RunWith 參數(shù)化出出鏡率非常的高,所以一定要多加注意。


@Test?

?用于表示注釋的方法是一個(gè) Junit 測試方法。

注意:測試方法的訪問修飾符必須是 public,測試方法的返回值必須是 void


@Ignore 忽略此方法

有時(shí)候我們想暫時(shí)不運(yùn)行某些測試方法\測試類,可以在方法前加上這個(gè)注解。

注意:可以忽略整個(gè)測試類。


@BeforeClass

當(dāng)我們運(yùn)行幾個(gè)有關(guān)聯(lián)的用例時(shí),可能會(huì)在數(shù)據(jù)準(zhǔn)備或其它前期準(zhǔn)備中執(zhí)行一些相同的命令,這個(gè)時(shí)候?yàn)榱俗尨a更清晰,更少冗余,可以將公用的部分提取出來,放在一個(gè)方法里,在測試類所有用例運(yùn)行之前?運(yùn)行一次。

注意:測試方法的訪問修飾符必須是?public ,返回值必須是?void static 方法。


@AfterClass

跟 @BeforeClass 對(duì)應(yīng),在測試類里所有用例運(yùn)行之后,運(yùn)行一次。用于處理一些測試后續(xù)工作,例如清理數(shù)據(jù),恢復(fù)現(xiàn)場。

注意:測試方法的訪問修飾符必須是?public?,返回值必須是?void??static?方法。



@Before @After?

與 @BeforeClass 和 @AfterCalss?的區(qū)別在于,@Before 和 @After?不止運(yùn)行一次,它會(huì)在每個(gè)用例運(yùn)行之前和之后都運(yùn)行一次。主要用于一些獨(dú)立于用例之間的準(zhǔn)備工作。

注意:測試方法的訪問修飾符必須是?public,測試方法的返回值必須是?void


@Runwith

測試運(yùn)行器則決定了用什么方式偏好去運(yùn)行這些測試集(Test-Suite)/類(Test-Case)/方法(Test-Method)。

@Runwith 就是放在測試類名之前,用來確定這個(gè)類怎么運(yùn)行的。也可以不標(biāo)注,會(huì)使用默認(rèn)運(yùn)行器。常見的運(yùn)行器有:

  • @RunWith(Parameterized.class) 參數(shù)化運(yùn)行器,配合 @Parameters 使用 Junit 的參數(shù)化功能

  • @RunWith(Suite.class) @SuiteClasses({ATest.class,BTest.class,CTest.class})?測試集運(yùn)行器配合使用測試集功能

  • @RunWith(JUnit4.class)?Junit4的默認(rèn)運(yùn)行器


@RunWith 實(shí)現(xiàn)參數(shù)化測試

怎么測試多分支?如一個(gè)對(duì)考試分?jǐn)?shù)進(jìn)行評(píng)價(jià)的函數(shù),返回值分別為“優(yōu)秀,良好,一般,及格,不及格”。在編寫測試的時(shí)候,如果編寫 5 個(gè)測試方法,進(jìn)而測試 5 種情況,是一件很麻煩的事情。

除此之外,還有一種通過構(gòu)造函數(shù)來綁定測試參數(shù)的編碼方式,大家可以根據(jù)比賽題目的要求分情況編碼即可。


@RunWith 實(shí)現(xiàn)用例套件化測試

測試套件意味著捆綁幾個(gè)單元測試用例并且一起執(zhí)行他們。在 JUnit 中,@RunWith@Suite 注釋用來運(yùn)行套件測試。涉及到測注解

  • @RunWith(Suite.class)

  • @SuiteClasses(value = { TestA.class, TestB.class })


3.2?Junit 測試方法執(zhí)行順序

寫 Junit 測試用例時(shí),有時(shí)候需要按照定義順序執(zhí)行我們的單元測試方法,比如如在測試數(shù)據(jù)庫相關(guān)的用例時(shí)候要按照測試插入、查詢、刪除的順序測試。如果不按照這個(gè)順序測試可能會(huì)出現(xiàn)問題。而JUnit測試時(shí)默認(rèn)的順序是隨機(jī)的。所以這時(shí)就需要有辦法要求 Junit 在執(zhí)行測試方法時(shí)按照我們指定的順序來執(zhí)行。

Junit 是通過 @FixMethodOrder 注解來控制測試方法的執(zhí)行順序的。@FixMethodOrder 注解的參數(shù)是 org.junit.runners.MethodSorters 對(duì)象, 在枚舉類org.junit.runners.MethodSorters 中 定義了如下三種順序類型:

  • MethodSorters.JVM(按照J(rèn)VM得到的方法順序,也就是代碼中定義的方法順序)

  • MethodSorters.DEFAULT(默認(rèn)的順序)

  • MethodSorters.NAME_ASCENDING(按方法名字母順序執(zhí)行)




3.3 Junit Rule

Junit 有了Rule,才使得有更多的擴(kuò)展性,能做更多的功能測試。@Rule的特點(diǎn)是:在一個(gè)class中所有的 @Test 標(biāo)注過的測試方法都會(huì)共享這個(gè)Rule,例如定義一個(gè)Timeout,所有方法運(yùn)行都會(huì)自動(dòng)檢測是否超時(shí)。

① TemporaryFolder Rule

測試的時(shí)候,我們經(jīng)常需要?jiǎng)?chuàng)建一個(gè)臨時(shí)文件/文件夾,但是在測試類中管理這些文件/文件夾有時(shí)候會(huì)很麻煩,這時(shí)使用?TemporaryFolderRule?就能很好的幫我們管理測試過程中的文件的創(chuàng)建與刪除。


② TestName Rule

用于在測試執(zhí)行過程中獲取測試方法名稱。


③ ExternalResource Rule

ExternalResource 是一個(gè)規(guī)則(如TemporaryFolder)的基類,在測試前構(gòu)造外部資源(一個(gè)文件、套接字、服務(wù)器、數(shù)據(jù)庫連接等),并保證在測試后將資源釋放。


3.4 Junit 測試 private 方法

Reflection(反射) 是 Java 程序開發(fā)語言的特征之一,反射可以在運(yùn)行時(shí)獲取一個(gè)類的所有信息,(包括成員變量,成員方法,構(gòu)造器等),并且可以操縱類的字段、方法、構(gòu)造器等部分。


4.?斷言

斷言(assertion)是一種在程序中的一階邏輯(如,一個(gè)結(jié)果為真或假的邏輯判斷式),目的為了表示與驗(yàn)證軟件開發(fā)者預(yù)期的結(jié)果:當(dāng)程序執(zhí)行到斷言的位置時(shí),對(duì)應(yīng)的斷言應(yīng)該為真。若斷言不為真時(shí),程序會(huì)中止執(zhí)行,并給出錯(cuò)誤信息。

單元測試的題目中,往往會(huì)指定使用具體的斷言方法,考察的斷言方法不是在?org.junit.Assert 類中,那么就在?org.hamcrest.MatcherAssert 類中。


4.1 Junit Assert?斷言


4.2 Hamcrest MatcherAssert 斷言

一般匹配符斷言:Junit 4 結(jié)合 Hamcrest 提供了一個(gè)全新的斷言語法——assertThat。測試人員可以只使用 assertThat 一個(gè)斷言語句,結(jié)合 Hamcrest 提供的匹配符,就可以表達(dá)全部的測試思想。



Junit 單元測試框架基礎(chǔ)知識(shí)的評(píng)論 (共 條)

分享到微博請遵守國家法律
阿合奇县| 双辽市| 聂荣县| 阜南县| 文登市| 类乌齐县| 秦安县| 宽城| 米易县| 信宜市| 竹山县| 凤阳县| 华宁县| 麻城市| 余干县| 阿拉善右旗| 金坛市| 桓仁| 太仓市| 清远市| 凤阳县| 习水县| 徐闻县| 西安市| 昌乐县| 定州市| 沅江市| 伊金霍洛旗| 额敏县| 湖南省| 怀仁县| 长沙县| 犍为县| 连云港市| 平罗县| 永修县| 庆阳市| 青浦区| 麦盖提县| 外汇| 嵊泗县|