欧美成人精品AAA|我要看1级黄片激情一区|AV手机天堂AAA特黄|成人免费av黄色|中文字幕AV资源|看一性一级黄色毛片|亚洲精品 无码一区二区在直播间|亚洲AV无码乱码AV毛片|中文无码人妻在线|天天天天操亚洲AV女人

品牌知名度調(diào)研問卷>>
JUnit是用于編寫和運行Java程序單元測試的開源框架,由Kent Beck和Erich Gamma建立它提供了一組注解和斷言方法,以及用于執(zhí)行測試的測試運行器。其現(xiàn)逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個,被廣泛應(yīng)用在Java開發(fā)領(lǐng)域中,成為標(biāo)準(zhǔn)的單元測試框架之一。
  • 外文名稱: JUnit
  • 創(chuàng)始人: Kent Beck,Erich Gamma
詳細(xì)介紹 PROFILE +

基本介紹

JUnit是一個Java語言的單元測試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個。JUnit有它自己的JUnit擴展生態(tài)圈。多數(shù)Java的開發(fā)環(huán)境都已經(jīng)集成了JUnit作為單元測試的工具。

JUnit是由Erich Gamma和Kent Beck編寫的一個回歸測試框架(regression testing framework)。Junit測試是程序員測試,即所謂白盒測試,因為程序員知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。Junit是一套框架,繼承TestCase類,就可以用Junit進行自動測試了。

安裝

安裝很簡單,先到以下地址下載一個最新的zip包:

下載完以后解壓到你喜歡的目錄下,假設(shè)是JUNIT_HOME,然后將JUNIT_HOME下的junit.jar包加到你的系統(tǒng)的CLASSPATH環(huán)境變量中,對于IDE環(huán)境,對于需要用到的junit的項目增加到lib中,其設(shè)置不同的IDE有不同的設(shè)置,這里不多講。

測試

最簡單的范例如下:

1、創(chuàng)建一個TestCase的子類

package junitfaq;

import java.util.*;

import junit.framework.*;

public class SimpleTest extends TestCase {

public SimpleTest(String name) {

super(name);

}

2、寫一個測試方法斷言期望的結(jié)果

public void testEmptyCollection(){

Collection collection = new ArrayList();

assertTrue(collection.isEmpty());

}

注意:JUnit推薦的做法是以test作為待測試的方法的開頭,這樣這些方法可以被自動找到并被測試。

3、寫一個suite()方法,它會使用反射動態(tài)的創(chuàng)建一個包含所有的testXxxx方法的測試套件

public static Test suite() {

return new TestSuite(SimpleTest.class);

}

4、寫一個main()方法以文本運行器的方式方便的運行測試

public static void main(String args[]) {

junit.textui.TestRunner.run(suite());

}

}

5、運行測試

以文本方式運行:

java junitfaq.SimpleTest

通過的測試結(jié)果是:

.

Time: 0

OK (1 tests)

Time上的小點表示測試個數(shù),如果測試通過則顯示OK。否則在小點的后邊標(biāo)上Fail,表示該測試失敗。

每次的測試結(jié)果都應(yīng)該是OK的,這樣才能說明測試是成功的,如果不成功就要馬上根據(jù)提示信息進行修正了。

如果JUnit報告了測試沒有成功,它會區(qū)分失?。╢ailures)和錯誤(errors)。失敗是你的代碼中的assert方法失敗引起的;而錯誤則是代碼異常引起的,例如ArrayIndexOutOfBoundsException。

以圖形方式運行:

java junit.swingui.TestRunner junitfaq.SimpleTest

通過的測試結(jié)果在圖形界面的綠色條部分。

以上是最簡單的測試樣例,在實際的測試中我們測試某個類的功能是常常需要執(zhí)行一些共同的操作,完成以后需要銷毀所占用的資源(例如網(wǎng)絡(luò)連接、數(shù)據(jù)庫連接,關(guān)閉打開的文件等),TestCase類給我們提供了setUp方法和tearDown方法,setUp方法的內(nèi)容在測試你編寫的TestCase子類的每個testXxxx方法之前都會運行,而tearDown方法的內(nèi)容在每個testXxxx方法結(jié)束以后都會執(zhí)行。這個既共享了初始化代碼,又消除了各個測試代碼之間可能產(chǎn)生的相互影響。

實踐

不要認(rèn)為壓力大,就不寫測試代碼。相反編寫測試代碼會使你的壓力逐漸減輕,因為通過編寫測試代碼,你對類的行為有了確切的認(rèn)識。你會更快地編寫出有效率地工作代碼。

下面是一些具體的編寫測試代碼的技巧或較好的實踐方法:

1.不要用TestCase的構(gòu)造函數(shù)初始化Fixture,而要用setUp()和tearDown()方法。

2.不要依賴或假定測試運行的順序,因為JUnit利用Vector保存測試方法。所以不同的平臺會按不同的順序從Vector中取出測試方法。

3.避免編寫有副作用的TestCase。例如:如果隨后的測試依賴于某些特定的交易數(shù)據(jù),就不要提交交易數(shù)據(jù)。簡單的回滾就可以了。

4.當(dāng)繼承一個測試類時,記得調(diào)用父類的setUp()和tearDown()方法。

5.將測試代碼和工作代碼放在一起,一邊同步編譯和更新。(使用Ant中有支持junit的task.)

6.測試類和測試方法應(yīng)該有一致的命名方案。如在工作類名前加上test從而形成測試類名。

7.確保測試與時間無關(guān),不要依賴使用過期的數(shù)據(jù)進行測試。導(dǎo)致在隨后的維護過程中很難重現(xiàn)測試。

8.如果你編寫的軟件面向國際市場,編寫測試時要考慮國際化的因素。不要僅用母語的Locale進行測試。

9.盡可能地利用JUnit提供地assert/fail方法以及異常處理的方法,可以使代碼更為簡潔。

10.測試要盡可能地小,執(zhí)行速度快。

11.不要硬性規(guī)定數(shù)據(jù)文件的路徑。

12.利用Junit的自動異常處理書寫簡潔的測試代碼

事實上在Junit中使用try-catch來捕獲異常是沒有必要的,Junit會自動捕獲異常。那些沒有被捕獲的異常就被當(dāng)成錯誤處理。

13.充分利用Junit 的assert/fail方法

assertSame()用來測試兩個引用是否指向同一個對象

assertEquals()用來測試兩個對象是否相等

14.確保測試代碼與時間無關(guān)

15.使用文檔生成器做測試文檔。

JUnit和ant結(jié)合

ant提供了兩個target:junit和junitreport運行所有測試用例,并生成html格式的報表

具體操作如下:

1.將 junit.jar 放在 ANT_HOMElib 目錄下

2.修改 build.xml,加入如下 內(nèi)容:

-------------- One or more tests failed, check the report for detail... -----------------------------

運行這個target,ant會運行每個TestCase,在report目錄下就有了很多TEST*.xml和一些網(wǎng)頁打開report目錄下的 index.html就可以看到很直觀的測試運行報告,一目了然。

在Eclipse中開發(fā)、運行JUnit測試相當(dāng)簡單。因為Eclipse本身集成了JUnit相關(guān)組件,并對JUnit的運行提供了無縫的支持。

使用幫助

junit3.x

我們通常使用junit 3.8

(1)、使用junit3.x版本進行單元測試時,測試類必須要繼承于TestCase父類;

(2)、測試方法需要遵循的原則:

A、public的

B、void的

C、無方法參數(shù)

D、方法名稱必須以test開頭

(3)、不同的Test Case之間一定要保持完全的獨立性,不能有任何的關(guān)聯(lián)。

(4)、我們要掌握好測試方法的順序,不能依賴于測試方法自己的執(zhí)行順序。

demo:

public class TestMyNumber extends TestCase {

private MyNumber myNumber;

public TestMyNumber(String name) {

super(name);

}

// 在每個測試方法執(zhí)行 [之前] 都會被調(diào)用

@Override

public void setUp() throws Exception {

// System.out.println("歡迎使用Junit進行單元測試…");

myNumber = new MyNumber();

}

// 在每個測試方法執(zhí)行 [之后] 都會被調(diào)用

@Override

public void tearDown() throws Exception {

// System.out.println("Junit單元測試結(jié)束…");

}

public void testDivideByZero() {

Throwable te = null;

try {

myNumber.divide(6, 0);

Assert.fail("測試失敗");

} catch (Exception e) {

e.printStackTrace();

te = e;

}

Assert.assertEquals(Exception.class, te.getClass());

Assert.assertEquals("除數(shù)不能為 0 ", te.getMessage());

}

}

junit4.x

(1)、使用junit4.x版本進行單元測試時,不用測試類繼承TestCase父類,因為,junit4.x全面引入了Annotation來執(zhí)行我們編寫的測試。

(2)、junit4.x版本,引用了注解的方式,進行單元測試;

(3)、junit4.x版本我們常用的注解:

A、@Before 注解:與junit3.x中的setUp()方法功能一樣,在每個測試方法之前執(zhí)行;

B、@After 注解:與junit3.x中的tearDown()方法功能一樣,在每個測試方法之后執(zhí)行;

C、@BeforeClass 注解:在所有方法執(zhí)行之前執(zhí)行;

D、@AfterClass 注解:在所有方法執(zhí)行之后執(zhí)行;

E、@Test(timeout=xxx)注解:設(shè)置當(dāng)前測試方法在一定時間內(nèi)運行完,否則返回錯誤;

F、@Test(expected=Exception.class)注解:設(shè)置被測試的方法是否有異常拋出。拋出異常類型為:Exception.class;

G、@Ignore注解:注釋掉一個測試方法或一個類,被注釋的方法或類,不會被執(zhí)行。

demo:

package com.an.junit;

import static org.junit.Assert.*;

import org.junit.After;

import org.junit.AfterClass;

import org.junit.Before;

import org.junit.BeforeClass;

import org.junit.Test;

public class TestMyNumber {

private MyNumber myNumber;

@BeforeClass

// 在所有方法執(zhí)行之前執(zhí)行

public static void globalInit() {

System.out.println("init all method...");

}

@AfterClass

// 在所有方法執(zhí)行之后執(zhí)行

public static void globalDestory() {

System.out.println("destory all method...");

}

@Before

// 在每個測試方法之前執(zhí)行

public void setUp() {

System.out.println("start setUp method");

myNumber = new MyNumber();

}

@After

// 在每個測試方法之后執(zhí)行

public void tearDown() {

System.out.println("end tearDown method");

}

@Test(timeout=600)// 設(shè)置限定測試方法的運行時間 如果超出則返回錯誤

public void testAdd() {

System.out.println("testAdd method");

int result = myNumber.add(2, 3);

assertEquals(5, result);

}

@Test

public void testSubtract() {

System.out.println("testSubtract method");

int result = myNumber.subtract(1, 2);

assertEquals(-1, result);

}

@Test

public void testMultiply() {

System.out.println("testMultiply method");

int result = myNumber.multiply(2, 3);

assertEquals(6, result);

}

@Test

public void testDivide() {

System.out.println("testDivide method");

int result = 0;

try {

result = myNumber.divide(6, 2);

} catch (Exception e) {

fail();

}

assertEquals(3, result);

}

@Test(expected = Exception.class)

public void testDivide2() throws Exception {

System.out.println("testDivide2 method");

myNumber.divide(6, 0);

fail("test Error");

}

public static void main(String[] args) {

}

}

特色功能

優(yōu)點

另外junit是在極限編程和重構(gòu)(refactor)中被極力推薦使用的工具,因為在實現(xiàn)自動單元測試的情況下可以大大的提高開發(fā)的效率,但是實際上編寫測試代碼也是需要耗費很多的時間和精力的,那么使用這個東西好處到底在哪里呢?筆者認(rèn)為是這樣的:

極限編程

要求在編寫代碼之前先寫測試,這樣可以強制你在寫代碼之前好好的思考代碼(方法)的功能和邏輯,否則編寫的代碼很不穩(wěn)定,那么你需要同時維護測試代碼和實際代碼,這個工作量就會大大增加。因此在極限編程中,基本過程是這樣的:構(gòu)思-> 編寫測試代碼-> 編寫代碼-> 測試,而且編寫測試和編寫代碼都是增量式的,寫一點測一點,在編寫以后的代碼中如果發(fā)現(xiàn)問題可以較快的追蹤到問題的原因,減小回歸錯誤的糾錯難度。

重構(gòu)

其好處和極限編程中是類似的,因為重構(gòu)也是要求改一點測一點,減少回歸錯誤造成的時間消耗。

其他情況

我們在開發(fā)的時候使用junit寫一些適當(dāng)?shù)臏y試也是有必要的,因為一般我們也是需要編寫測試的代碼的,可能原來不是使用的junit,如果使用junit,而且針對接口(方法)編寫測試代碼會減少以后的維護工作,例如以后對方法內(nèi)部的修改(這個就是相當(dāng)于重構(gòu)的工作了)。另外就是因為junit有斷言功能,如果測試結(jié)果不通過會告訴我們哪個測試不通過,為什么,而如果是像以前的一般做法是寫一些測試代碼看其輸出結(jié)果,然后再由自己來判斷結(jié)果是否正確,使用junit的好處就是這個結(jié)果是否正確的判斷是它來完成的,我們只需要看看它告訴我們結(jié)果是否正確就可以了,在一般情況下會大大提高效率。

特性

JUnit是一個開放源代碼的Java測試框架,用于編寫和運行可重復(fù)的測試。他是用于單元測試框架體系xUnit的一個實例(用于java語言)。它包括以下特性:

1、用于測試期望結(jié)果的斷言(Assertion)

2、用于共享共同測試數(shù)據(jù)的測試工具

3、用于方便的組織和運行測試的測試套件

4、圖形和文本的測試運行器

本百科詞條由網(wǎng)站注冊用戶【 CN109625 】編輯上傳提供,當(dāng)前頁面所展示的詞條介紹涉及宣傳內(nèi)容屬于注冊用戶個人編輯行為,網(wǎng)站不完全保證內(nèi)容信息的準(zhǔn)確性、真實性,也不代表本站立場。 版權(quán)聲明 反饋 我要認(rèn)領(lǐng)
最新評論
相關(guān)知識文章
十大國外社交軟件app 國外聊天軟件哪個最火 外國常用聊天app盤點[2026]
不同國家都有自己流行的社交軟件,有的軟件用戶基數(shù)龐大,有的安全私密性更高,有的雖小眾但使用體驗好。那么,你知道國外用什么聊天軟件嗎?下面,maigoo小編就為大家盤點國外最火的十大聊天軟件,包括WhatsApp、Facebook Messenger、Instagram Direct、iMessage、Skype、Telegram等,一起來了解下這些國外社交軟件app吧。
十大AI換臉軟件排行 視頻換臉軟件哪個好 ai換臉工具推薦[2026]
ai換臉工具有哪些?視頻換臉軟件哪個好?Maigoo小編今天為大家?guī)砹耸髶Q臉軟件,包括:DeepFaceLab、FaceSwap、ROOP、Reface、FaceFusion、Rope、DeepSwap等,一起來看看吧。
十大去馬賽克軟件排行 視頻去馬賽克軟件哪個好用[2026]
去馬賽克軟件有哪些?視頻去馬賽克軟件哪個好用?Maigoo小編為大家?guī)砹耸笕ヱR賽克軟件排行,如Lada、JavPlayer、DeepMosaics、CodeFormer、Topaz Video AI、HitPaw VikPea、DeepCreamPy等,一起來看看吧。
國內(nèi)十大聊天工具 國內(nèi)聊天軟件排行 聊天交友軟件推薦[2026]
近五年來,我國移動社交用戶規(guī)模持續(xù)增長,到2019年已有7.77億人左右,同時,各類社交產(chǎn)品層出不窮,企圖從中分一杯羹;那么時至今日,用戶活躍度最高的聊天軟件有哪些呢?微信、QQ、陌陌、釘釘、探探、Soul、積目、米聊等聊天工具市場占有率如何?下面跟隨maigoo小編看看這些聊天交友軟件!
國外十大最火的短視頻app推薦 外國人常用的短視頻軟件有哪些[2026]
外國人常用的短視頻軟件有哪些,國外短視頻app哪個最火?Maigoo小編為大家?guī)砹藝馐笞罨鸬亩桃曨lapp,如:TikTok、YouTube Shorts、Instagram Reels、Kwai、Snapchat Spotlight、Moj、Likee 等,一起來看看吧。
十大編程軟件排行榜 編程開發(fā)工具大全 c語言編程軟件有哪些[2026]
世界上主流的編程語言有C、Java、Python、C++、C#、Visual Basic、PHP等,針對這些編程語言,又有相對應(yīng)的編程開發(fā)工具被廣泛運用。那么你知道主流的編程軟件有哪些嗎?下面maigoo網(wǎng)編輯為大家盤點常見的十大編程工具,包括Visual Studio、IntelliJ IDEA、PyCharm、WebStorm、Android Studio、Xcode等,一起來了解下吧。
十大ai聊天自動軟件 ai聊天APP哪個好 AI對話聊天軟件推薦[2026]
隨著AI的盛行,和AI聊天已經(jīng)成為許多年輕人的發(fā)泄出口,AI能做到24小時的情感陪伴,情緒價值拉滿,那ai聊天APP哪個好呢?Maigoo小編為大家?guī)砹耸骯i聊天自動軟件,如:ChatGPT、Talkie、Character.Ai、Replika、豆包、Claude、AlienChat等,一起來看看吧。
十大建模軟件排行榜 3d建模軟件有哪些 3d制圖軟件哪個好[2026]
3d建模軟件有哪些?3d制圖軟件哪個好?Maigoo小編今天為大家?guī)砹耸蠼\浖?,包括:Cinema 4D、Blender、Maya、3ds Max、ZBrush、Rhinoceros、SketchUp等,一起來看看吧。
十大室內(nèi)設(shè)計軟件 裝修設(shè)計軟件排名 家裝設(shè)計軟件哪個最好用[2026]
室內(nèi)設(shè)計是一個專業(yè)性極強的領(lǐng)域,設(shè)計師要在安全、實用、有限預(yù)算的前提下,充分考慮空間、色彩、光影、裝飾、陳設(shè)、綠化等要素進行設(shè)計。那么在當(dāng)今室內(nèi)設(shè)計領(lǐng)域,有哪些好用的裝修設(shè)計軟件呢?3DS MAX、AutoCAD、草圖大師、Photoshop、ArchiCAD、Vray、Lightscape、Sweet Home 3D等室內(nèi)設(shè)計軟件如何?下面跟隨買購網(wǎng)編輯一起看看!
十大最好玩小程序游戲 微信小程序游戲排行 最火微信小游戲推薦[2026]
微信小程序游戲是一種輕量級的游戲應(yīng)用,不僅開發(fā)成本低、訪問便捷、占用空間少,還支持多種游戲類型。那么你知道時下最熱門的微信小程序游戲有哪些嗎?本文Maigoo小編盤點了十大好玩的小程序游戲,包括三國:冰河時代、向僵尸開炮、羊了個羊:星球、無盡冬日、靈畫師等,一起來看看吧!
國內(nèi)十大應(yīng)用市場 安卓應(yīng)用商店排名 好用的手機軟件商店(2026)
安卓應(yīng)用市場有哪些?好用的手機軟件商店是哪個?Maigoo小編為大家?guī)砹藝鴥?nèi)十大應(yīng)用商店,如:應(yīng)用寶、華為應(yīng)用商店、豌豆莢、360手機助手、vivo應(yīng)用商店、OPPO程序商店、應(yīng)用匯等,一起來看看吧。
十大網(wǎng)上醫(yī)療咨詢平臺 線上問診app哪個好 醫(yī)生在線咨詢平臺(2026)
在線醫(yī)療咨詢平臺有哪些?線上醫(yī)生咨詢app哪個好?Maigoo小編為大家?guī)砹耸缶W(wǎng)上醫(yī)療咨詢平臺,如好大夫在線、丁香醫(yī)生、春雨醫(yī)生、京東健康、平安健康、醫(yī)鹿、怡禾等,一起來看看吧。
十大天氣預(yù)報APP 好用的天氣app排行 天氣預(yù)報軟件哪個最準(zhǔn)確(2026)
出門看天氣是許多人常做的一件事,不過市面上有各種天氣預(yù)報類軟件,到底天氣預(yù)報軟件哪個比較準(zhǔn)呢?下面小編為大家分享十大好用的天氣預(yù)報APP,包括墨跡天氣、彩云天氣、天氣通、2345天氣王、準(zhǔn)時天氣、最美天氣等,一起來了解下吧!
十大好用的寫作軟件 寫小說的軟件排行 可以寫小說的軟件有哪些(2026)
可以寫小說的軟件有哪些?寫作軟件哪個好用?Maigoo小編為大家?guī)砹耸髮懶≌f的軟件,包括:起點作家助手、橙瓜碼字、Scrivener、純純寫作、番茄寫作助手、云上寫作、Ulysses等,一起來看看吧。
十大裝修軟件推薦 裝修設(shè)計軟件排名 裝修軟件app哪個好(2026)
近些年,各大小家裝公司逐漸向數(shù)字化轉(zhuǎn)型。隨著行業(yè)內(nèi)一線品牌齊家網(wǎng)在香港的上市,標(biāo)志著互聯(lián)網(wǎng)家裝模式的成熟。如今線上家裝領(lǐng)域中,土巴兔裝修、酷家樂設(shè)計師、齊家、愛空間裝修、好好住、住小幫、知戶型等裝修軟件,已成為越來越多業(yè)主的選擇,這些家裝設(shè)計軟件帶來的一站式服務(wù),讓裝修變得更省心。下面和maigoo編輯一起看看!
十大靠譜的二手房app 買二手房用什么軟件 二手房交易軟件推薦〈2026〉
我國二手房市場規(guī)模龐大,不同地區(qū)的掛牌量、成交量、成交價均有不同表現(xiàn)。那么現(xiàn)在市面上,看二手房的app有哪些呢,二手房app哪個好用?本文中maigoo小編盤點了十大二手房交易軟件,包括貝殼找房、安居客、鏈家,以及我愛我家、房天下、樂有家、中原找房、幸福里、樂居買房等。下面一起來詳細(xì)了解下。
十大跑分軟件排行 電腦跑分軟件哪個好 靠譜的電腦檢測軟件推薦(2026)
靠譜的電腦跑分軟件有哪些?跑分軟件哪個好?Maigoo小編為大家?guī)砹耸箅娔X跑分軟件,如:3DMark、CineBench、AIDA64、硬件狗狗、PCMark、CrystalDiskMark、CPU-Z等,一起來看看吧。
十大最火的交友軟件 交友app哪個好 視頻交友軟件推薦〈2026〉
交友軟件拉近了人們的距離,不同地方的人在網(wǎng)絡(luò)上結(jié)識,在現(xiàn)實中交往,成就了一段只屬于彼此的友情。本文中,買購網(wǎng)編輯將帶領(lǐng)大家看看網(wǎng)上交友軟件有哪些,了解下視頻交友軟件哪個好用。例如陌陌APP、探探APP、Soul、積目APP、牽手APP、宇宙奶茶館APP、連信APP、伊對APP等,都是極具代表性的。
中國臺灣十大最常用的軟件 臺灣民眾常用app排行 臺灣最火的APP應(yīng)用〈2026〉
相關(guān)統(tǒng)計數(shù)據(jù)顯示,臺灣同胞們最喜歡的應(yīng)用是實時通訊類APP,其次是社群平臺類APP、地圖APP、娛樂類APP等。本文中,maigoo小編就帶大家看看臺灣常用的軟件有哪些,一起了解下臺灣app排名榜單,例如Line、Messenger、Instagram、TikTok、YouTube、Uber、?Foodpanda等,都是極具代表性的,在臺灣擁有廣泛的用戶基礎(chǔ)。
十大游戲陪玩軟件排行 游戲陪練app哪個好 陪玩打游戲的軟件〈2026〉
隨著國內(nèi)游戲陪玩市場的不斷完善,各大游戲陪玩平臺也在不斷洗牌,那么當(dāng)下最火的游戲陪玩軟件有哪些呢?下面maiGoo小編為大家盤點十大游戲陪練app,包括斗魚一起玩、小鹿組隊、點點開黑、哈哈喵開黑、獵游、撈月狗等,一起來了解下吧。