spock框架中測試樁怎么用

這篇文章主要介紹了spock框架中測試樁怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)建站專業(yè)提供成都移動機(jī)房服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買成都移動機(jī)房服務(wù),并享受7*24小時金牌售后服務(wù)。

使用場景

when:
int a = 12;
int b = xxxService.squre(a);
int c = xxxService.plus(a, b);
then:
c == 100

假如我們需要測試以上代碼,但被告知squre方法目前還沒開發(fā)完成,或者正在修改中,現(xiàn)在使用無法得到正確的結(jié)果。

這時就可以用測試樁:給squre()方法造一個或多個假的返回值,讓我們能夠正常測試后面的plus()方法。

測試樁Stub與Mock的具體解釋在后面代碼注釋中做了說明。

使用實(shí)例

package com.yawn.spock

import com.yawn.spock.service.CalculateInterface
import com.yawn.spock.service.CalculateService
import spock.lang.Specification

/**
 * <pre>
 *
 * Stub與Mock
 * (1)相同點(diǎn)
 *      Stub和Mock對象都是用來模擬外部依賴,使我們能控制。
 *      如果被測程序、系統(tǒng)或?qū)ο?,我們稱之為A。在測試A的過程中,
 *      A需要與程序、系統(tǒng)或?qū)ο驜進(jìn)行交互,那么Stub/Mock就是用來模擬B的行為來與A進(jìn)行交互。
 * (2)不同點(diǎn)
 *      Stub,也即“樁”,很早就有這個說法了,主要出現(xiàn)在集成測試的過程中,
 *      從上往下的集成時,作為下方程序的替代。作用如其名,就是在需要時,
 *      能夠發(fā)現(xiàn)它存在,即可。就好像點(diǎn)名,“到”即可。
 *      Mock,主要是指某個程序的傀儡,也即一個虛假的程序,
 *      可以按照測試者的意愿做出響應(yīng),返回被測對象需要得到的信息。
 *      也即是要風(fēng)得風(fēng)、要雨得雨、要返回什么值就返回什么值。
 *
 *      總體來說,stub完全是模擬一個外部依賴,用來提供測試時所需要的測試數(shù)據(jù)。
 *      而mock對象用來判斷測試是否能通過,也就是用來驗(yàn)證測試中依賴對象間的交互能否達(dá)到預(yù)期。
 * </pre>
 * @author yawn
 *     2019/6/10 14:52
 */
class MockSpec extends Specification {

    def "mock 測試樁"() {
        given: "構(gòu)造測試樁"
        CalculateInterface calculateService = Stub(CalculateInterface)
        calculateService.plusPlus(_) >> 1

        when:
        int x = calculateService.plusPlus(12)
        int y = calculateService.plusPlus(3)

        then:
        x == 1
        y == 1
    }

    def "mock 測試樁得到不同的多個值"() {
        given: "構(gòu)造測試樁"
        CalculateService calculateService = Stub(CalculateService)
        calculateService.plusPlus(_) >>> [1, 2, 3]

        when:
        int x = calculateService.plusPlus(12)
        int y = calculateService.plusPlus(3)
        int z = calculateService.plusPlus(2)

        then:
        x == 1
        y == 2
        z == 3
    }
}

使用Stub與Mock方法就可以得到對應(yīng)的傀儡實(shí)例,我們可以對這個 傀儡 實(shí)例定義其方法的返回值。

calculateService.plusPlus(_) >> 1 // 定義了一個返回值

calculateService.plusPlus(_) >>> [1, 2, 3] // 定義了多個返回值,每次執(zhí)行,按照順序取一個作為返回值。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“spock框架中測試樁怎么用”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

網(wǎng)站名稱:spock框架中測試樁怎么用
轉(zhuǎn)載來源:http://muchs.cn/article18/ipicgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、定制網(wǎng)站、搜索引擎優(yōu)化、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司