溫馨提示×

溫馨提示×

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

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

spock中如何使groovy語法

發(fā)布時間:2021-06-18 14:59:46 來源:億速云 閱讀:267 作者:Leah 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關(guān)spock中如何使groovy語法,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

引言

在使用spock測試框架時,常常會有如下的測試代碼出現(xiàn):

    // 測試方法
    def "test plus 1"() {
        given: "準備數(shù)據(jù)"
        def a = 1
        def b = 2

        when: "測試方法"
        def c = calculateService.plus(a, b)

        then: "校驗結(jié)果"
        c == 4 - 1
    }

很多人把它當作固定格式來看待 ,尤其是像我這種從java幾天內(nèi)上手groovy和spock的,幾乎不會去深究這是什么語法。

其實,在spock框架中,使用到一些groovy特有的語法格式,這些語法在Java中并不常見,具體如下:

Labeled statements 標簽語句

Any statement can be associated with a label. Labels do not impact the semantics of the code and can be used to make the code easier to read like in the following example:

任何語句都可以關(guān)聯(lián)一個標簽,這樣不但不改變語義,還可以讓語句的可讀性更強,如下:

given:
    def x = 1
    def y = 2
when:
    def z = x+y
then:
    assert z == 3

其實,在java中也有標簽語句,如下代碼:

for (int i=0;i<10;i++) {
    for (int j=0;j<i;j++) {
        System.out.println(j);
        if (j == 5) {
            break exit;
        }
    }
    exit: System.out.println(i);
}

雖然上面的代碼是符合語法的,但是java中一般不推薦使用標簽語句。但是在使用groovy語言的spock測試框架中,這種語法很流行,因為它確實讓測試代碼更加簡單明了。

Power assertion 強斷言/強力斷言

Power assertion 強斷言/強力斷言,就是在斷言失敗時,提供一個可視化的表達,讓我們更清楚地看到斷言失敗的原因以及斷言語句每一部分的運算結(jié)果。

例如,執(zhí)行以下斷言語句:

assert 1+1 == 3

將會打印出以下內(nèi)容:

Caught: Assertion failed:

assert 1+1 == 3
        |  |
        2  false

當斷言語句更加復(fù)雜時,power assertion 則更加能發(fā)揮出優(yōu)勢來。例如,下面spock框架具體測試用例和答應(yīng)出的結(jié)果:

spock中如何使groovy語法

power assertion

data tables

    def "test1"() {
        given: "準備mock數(shù)據(jù)"

        expect: "測試方法"
        z == calculateService.plus(x, y)

        where: "校驗結(jié)果"
        x | y || z
        1 | 0 || 1
        2 | 1 || 3
    }

以上就是spock中如何使groovy語法,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI