在上篇文章中我們介紹了Spock測試框架環境的搭建及最簡單的用例。接下來這篇,我們介紹基於Spock怎麼寫自動化用例。
需要了解的是Spock也是一個基於BDD方式的測試框架。
Spock測試套件包括的關鍵字/函數有以下,後續再詳細介紹
關鍵函數 setupSpec() ---只跑一次 setup() ---每個測試前跑一次 cleanup() ---每個用例結束後跑一次 cleanupSpec() --結束後跑一次 關鍵字 given
and when then expect cleanup where 不用解釋,看字面意思應該好理解
那我們來看看give when then 的寫法。編寫如下的代碼加在原來的文件中
def "check case-insensitive equality of 2 strings"() { given: String str1 = "hello" String str2 = "HELLO" when: str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: str1 == str2 } def "check addition of 2 numbers"() { given: int input1 = 10 int input2 = 25 when: int result = input1 + input2 then: result == 35 }
很簡單的2段代碼。跑完後結果如下:
需要注意的地方:
1. 如果你使用BDD模式的話,when 和then必須成對出現
比如不寫when,直接寫then會提示如下錯誤(但只寫when是可以的)
2. 有時候我們在given中就想做斷言,可以使用expect來進行。
比如下面這段用例
def 'expect case' (){ given: int inpu1 = 20 expect: inpu1 == 30 when: int result = inpu1 + 3 then: result ==15 }
執行後,就是因爲條件不滿足就中止測試