Groovy單元測試框架spock基礎功能Demo


spock是一款全能型的單元測試框架。

最近在做單元測試框架的調研和嘗試,目前確定的方案框架包括是:spock,Junit,Mockito以及powermock。由於本身使用Groovy的原因,比較鍾情於spock到家,但是奈何兼容性比較差,特別是跟Mockito等框架的高級語法的兼容。不過這不妨礙spock是一個非常優秀的單元測試框架,特別體現在用例的形式和測試報告的展示方式以及報錯信息的展示(這個我最中意)。

在簡單看過官方文檔之后做了一些簡單的Demo,分享給大家。(官方文檔貌似有段時間沒有更新了,如果用的話建議升級最新版)

package com.FunTester.spock.pratice

import org.slf4j.Logger
import spock.lang.Shared
import spock.lang.Specification

import static com.fun.frame.SourceCode.getLogger

class test01 extends Specification {

    @Shared
    int a = 10;

    @Shared
    Logger logger = getLogger(this.getClass().getName())

    def setupSpec() {
        logger.info "測試類開始! ${logger.getName()}"
    }

    def setup() {
        logger.info "測試方法開始!"
    }

    def "這是一個測試"() {
        given: "准備測試數據"
        def s = 3
        def ss = 3
        expect: "驗證結果"
        s == ss
    }

    def "表達式測試,表達式左右運算符號"() {
        given: "准備數據"

        expect: "測試方法"
        z == x + y

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

    def "表達式測試,表達式左右對象方法"() {
        expect:
        name.size() == length
        where:
        name      | length
        "Spock"   | 5
        "Kirk"    | 4
        "Scotty"  | 6
        "Sc3otty" | 7
    }

    def "表達式測試,表達式左右對象方法,數組表示測試數據"() {
        expect:
        name.size() == length
        where:
        name << ["fjdslj", "fds"]
        length << [6, 3]
    }

    def "校驗對象"() {
        given:
        def per = new Per("fun", 12)
        expect:
        with(per) {
            name == "fun"
            age == 12
        }
    }


    def "when then結構測試"() {
        when:
        def s = plus(3, 2)
        def ss = plus(3, 2)
        then:
        verifyAll {
            s == 3
            ss == 3
        }
    }

/**
 * 測試方法
 * @param i
 * @param j
 * @return
 */
    def plus(int i, int j) {
        i
    }

/**
 * 測試類
 */
    class Per {

        Per(String name, int age) {
            this.name = name
            this.age = age
        }

        String name

        int age


    }
}

展示一下spock的測試報告:

  • 有沒有驚喜!!!

技術類文章精選

非技術文章精選

大咖風采

長按關注


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM