中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

spock框架中測試樁怎么用

發布時間:2021-09-19 12:39:46 來源:億速云 閱讀:162 作者:小新 欄目:大數據

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

使用場景

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

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

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

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

使用實例

package com.yawn.spock

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

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

    def "mock 測試樁"() {
        given: "構造測試樁"
        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: "構造測試樁"
        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方法就可以得到對應的傀儡實例,我們可以對這個 傀儡 實例定義其方法的返回值。

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

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

感謝你能夠認真閱讀完這篇文章,希望小編分享的“spock框架中測試樁怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

萍乡市| 安西县| 晴隆县| 曲阳县| 舟山市| 搜索| 青龙| 盐津县| 孙吴县| 墨脱县| 霞浦县| 井研县| 仪征市| 德阳市| 晋中市| 武夷山市| 溧阳市| 平昌县| 三原县| 汪清县| 临朐县| 金平| 明星| 滦平县| 宝清县| 太湖县| 江永县| 平潭县| 杭锦后旗| 临海市| 巴马| 武功县| 沂南县| 宜兴市| 呼伦贝尔市| 佛坪县| 苏州市| 梁河县| 杨浦区| 沙坪坝区| 云阳县|