software test
和軟件測(cè)試相關(guān)的內(nèi)容,包括單元測(cè)試,集成測(cè)試,壓力測(cè)試
摘要: 雖然easymock中提供了大量的方法來(lái)進(jìn)行參數(shù)匹配,但是對(duì)于一些特殊場(chǎng)合比如參數(shù)是復(fù)雜對(duì)象而又不能簡(jiǎn)單的通過(guò)equals()方法來(lái)比較,這些現(xiàn)有的參數(shù)匹配器就無(wú)能為力了。easymock為此提供了IArgumentMatcher 接口來(lái)讓我們實(shí)現(xiàn)自定義的參數(shù)匹配器。
閱讀全文
摘要: 在easymock中,對(duì)于mock對(duì)象的同一個(gè)方法,可以為每一次的調(diào)用定制不同的行為。在record階段easymock會(huì)精確的記錄我們錄入的行為,基于每一次的方法調(diào)用。
閱讀全文
摘要: 前面的教程中,我們看到easymock可以通過(guò)expect方法來(lái)設(shè)定mock方法的返回值或者異常,但是注意這些案例中設(shè)置的返回值都是在調(diào)用被測(cè)試的類的方法前就已經(jīng)確定下來(lái)的,即我們其實(shí)在測(cè)試類的代碼運(yùn)行前(實(shí)際是在EasyMock.replay()方法調(diào)用前)就已經(jīng)"預(yù)知"了返回結(jié)果。
但是在某些情況下,我們可能無(wú)法預(yù)知返回值,比如我們需要根據(jù)輸入的參數(shù)值來(lái)決定返回什么,而這個(gè)參數(shù)可能無(wú)法在record階段獲得。因此在mock方法中我們無(wú)法在record階段就決定應(yīng)該返回什么。
對(duì)于這種場(chǎng)景,easymock提供了IAnswer接口和andAnswer()方法來(lái)提供運(yùn)行時(shí)決定返回值或者異常的機(jī)制。
閱讀全文
摘要: easymock中提供對(duì)于類的mock功能,我們可以方便的mock這個(gè)類的某些方法,指定預(yù)期的行為以便測(cè)試這個(gè)類的調(diào)用者。這種場(chǎng)景下被mock的類在測(cè)試案例中扮演的是次要測(cè)試對(duì)象或者說(shuō)依賴的角色,主要測(cè)試對(duì)象是這個(gè)mock類的調(diào)用者。但是有時(shí)候我們需要將這個(gè)測(cè)試類作為主要測(cè)試對(duì)象,我們希望這個(gè)類中的部分(通常是大部分)方法保持原有的正常行為,只有個(gè)別方法被我們mock掉以便測(cè)試。
閱讀全文
摘要: easymock中提供了非常多的方法來(lái)實(shí)現(xiàn)參數(shù)匹配,基本能滿足一般參數(shù)匹配的要求。
閱讀全文
摘要: 在創(chuàng)建mock對(duì)象的時(shí)候,我們可以命名mock對(duì)象。
命名mock對(duì)象有什么好處呢?其實(shí)就是一點(diǎn),即在當(dāng)測(cè)試案例因?yàn)槟硞€(gè)mock對(duì)象的狀態(tài)或行為不符合要求而失敗的時(shí)候,在異常信息里面可以輸出這個(gè)mock對(duì)象的名稱。
閱讀全文
摘要: 對(duì)于mock對(duì)象上的mock方法的調(diào)用,easymock支持指定次數(shù),默認(rèn)為1.同時(shí)easymock提供了其他的方法,用于指定具體調(diào)用次數(shù)或者放寬調(diào)用次數(shù)檢驗(yàn)。
閱讀全文
摘要: easymock并不是萬(wàn)能的,在使用easymock時(shí)有一些限制需要注意。
閱讀全文
摘要:
前面教程中有個(gè)章節(jié)討論到mock和stub的概念差別,一般來(lái)說(shuō)easymock如其名所示,主要是用來(lái)做mock用的,但是easymock中也提供有對(duì)stub的支持, 主要體現(xiàn)在andStubAnswer(),andStubDelegateTo(),andStubReturn(),andStubThrow()和asStub()等方法的使用上。
閱讀全文
摘要: 在easymock的使用過(guò)程中,當(dāng)創(chuàng)建mock對(duì)象時(shí),我們會(huì)遇到 strict mock和nice mock的概念。上述的測(cè)試案例驗(yàn)證了strict mock和nice mock的基本使用,對(duì)于同一個(gè)mock對(duì)象,strict模式下多個(gè)方法之間的調(diào)用順序在record階段和replay階段下是需要保持一致的。但是故事并不是到此結(jié)束,更有意思的內(nèi)容在后面:如果出現(xiàn)多個(gè)mock對(duì)象,那么這些不同mock對(duì)象的方法之間,他們的調(diào)用順序是否檢測(cè)?普通mock和nice mock模式下自然是不會(huì)檢測(cè)順序,但是strict模式下呢?
閱讀全文
摘要: IMocksControl接口容許創(chuàng)建多個(gè)mock對(duì)象,這些創(chuàng)建的對(duì)象自動(dòng)關(guān)聯(lián)到這個(gè)mocksControl實(shí)例上,以后再調(diào)用replay()/verify()/reset()時(shí)就不需要逐個(gè)列舉出每個(gè)mock對(duì)象。當(dāng)mock對(duì)象比較多,尤其是原有代碼上新增mock 對(duì)象時(shí)非常方便。
閱讀全文
摘要: 前面的例子中,mock的對(duì)象都是基于interface,雖然說(shuō)我們總是強(qiáng)調(diào)要面對(duì)接口編程,而不要面對(duì)實(shí)現(xiàn),但是實(shí)際開(kāi)發(fā)中不提取interface而直接使用class的場(chǎng)景非常之多。尤其是一些當(dāng)前只有一個(gè)明確實(shí)現(xiàn)而看不到未來(lái)擴(kuò)展的類,是否應(yīng)該提取interface或者說(shuō)是否應(yīng)該現(xiàn)在就提取interface,總是存在爭(zhēng)論。
這種情況下,我們就會(huì)面臨主要測(cè)試對(duì)象依賴到一個(gè)具體類而不是interface的情況,easymock中通過(guò)class extension 來(lái)提供對(duì)class mocking的支持。
閱讀全文
摘要: 關(guān)于easymock的典型使用方式,在easymock的官網(wǎng)文檔中,有非常詳盡的講解,文檔地址為 http://easymock.org/EasyMock3_0_Documentation.html,文檔的開(kāi)頭一部分內(nèi)容都是easymock中最基本的使用介紹,雖然是英文,但是非常容易看懂,適用新學(xué)者入門。
這里只羅列一些簡(jiǎn)單的常用功能。
閱讀全文
摘要: record-replay-verify 模型容許記錄mock對(duì)象上的操作然后重演并驗(yàn)證這些操作。這是目前mock框架領(lǐng)域最常見(jiàn)的模型,幾乎所有的mock框架都是用這個(gè)模型,有些是現(xiàn)實(shí)使用如easymock,有些是隱式使用如jmockit。
record-replay-verify 模型非常好的滿足了大多數(shù)測(cè)試場(chǎng)景的需要:先指定測(cè)試的期望,然后執(zhí)行測(cè)試,再驗(yàn)證期望是否被滿足。這個(gè)模型簡(jiǎn)單直接,易于實(shí)現(xiàn),也容易被開(kāi)發(fā)人員理解和接受,因此被各個(gè)mock框架廣泛使用。
閱讀全文
摘要: 在單元測(cè)試中,通常我們都會(huì)有一個(gè)明確的測(cè)試對(duì)象,我們測(cè)試的主要目的就是為了驗(yàn)證這個(gè)類的工作如我們預(yù)期。
閱讀全文
摘要: easymock是目前java mock 工具中比較流行的工具,這個(gè)教程將系統(tǒng)的介紹easymock的使用。
主要內(nèi)容來(lái)自easymock的官網(wǎng)教程,針對(duì)日常使用進(jìn)行了一些篩選和補(bǔ)充,另外增加一些個(gè)人的理解和認(rèn)識(shí)。
另外考慮到網(wǎng)絡(luò)上已有不少分散的教程,我將適當(dāng)?shù)逆溄舆M(jìn)來(lái)。
教程的內(nèi)容將在隨后逐漸添加,目前計(jì)劃的目錄如下,相應(yīng)內(nèi)容完成之后我將逐個(gè)更新此文的鏈接。
閱讀全文
摘要: 作為測(cè)試的基本概念,在開(kāi)發(fā)測(cè)試中經(jīng)常遇到mock和stub。之前認(rèn)為自己對(duì)這兩個(gè)概念已經(jīng)很明白了,但是當(dāng)決定要寫(xiě)下來(lái)并寫(xiě)清楚以便能讓不明白的人也能弄明白,似乎就很有困難。
試著寫(xiě)下此文,以檢驗(yàn)自己是不是真的明白mock和stub。
閱讀全文
摘要: 一直在使用easymock作為mock工具,但是easymock有一個(gè)一直令我極其惱火的地方:easymock將interface和class的mock區(qū)分開(kāi),給出了針對(duì)interface mock的easyMock和針對(duì)class mock的easyMock class extension。兩種mock被嚴(yán)格區(qū)分開(kāi),連jar包都是兩個(gè),使用時(shí)不能混用,比如不能用easymock (非class extension)來(lái)mock class。
easymock已經(jīng)發(fā)布了新的3.0版本,該版本的主要改進(jìn)就是消除上述的問(wèn)題,新版本中可以直接mock class,不再?gòu)?qiáng)制使用easyMock class extension。
強(qiáng)烈推薦還在使用2.*的朋友們升級(jí)到3.0版本。
閱讀全文
摘要: TestNG的官方文檔的中文翻譯版第5章,由于內(nèi)容太長(zhǎng)拆開(kāi),本文是5.10-5.14,主要話題是Rerunning failed tests,JUnit tests,JDK 1.4,Running TestNG programmatically和BeanShell and advanced group selection。
閱讀全文
摘要: TestNG的官方文檔的中文翻譯版第5章,由于內(nèi)容太長(zhǎng)拆開(kāi),本文是5.8-5.9,主要話題是Class level annotations和Parallel running and time-outs。
閱讀全文
Full software test Archive