はじめに
仕事で spockをつかうことになりそうなので、まずはHello, World的な簡単なサンプルを実行することにしました。
環境構築
環境情報
- JDK 1.8
- IntelliJ IDEA 2017.2.4
- spock 1.1(groovy2.4)
IntelliJで プロジェクト作成
IntelliJ のツールバーより、
- [ファイル] -> [新規] を選択。
- Gradleプロジェクトを選択。
- Java, Groovyにチェックを入れる。
あとは、デフォルトのままにOKを押していく。
build.gradleの修正
spockをダウンロードするようにbuild.gradleを修正。
version 1.0-SNAPSHOT
apply plugin: groovy
apply plugin: java
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile org.codehaus.groovy:groovy-all:2.3.11
testCompile "org.spockframework:spock-core:1.1-groovy-2.4"
}
code
テスト対象コード
以下のクラスをテストします。src/main/java/sample/Calculator.java
package sample
class Calculator {
int add(int a, int b) {
return a + b
}
}
テストクラス
以下のテストクラスを用意します。 test/groovy/CalculatorSpec
package spock
import sample.Calculator
import spock.lang.Specification
class CalculatorSpec extends Specification {
def 足し算1() {
setup:
Calculator calc = new Calculator()
expect:
calc.add(1,1) == 2
}
}
- setup: ・・・ 前処理でやりたいことを書く
- expect: ・・・期待するテスト結果を書く == でAssertする。
CalculatorSpecを選択して、実行する。テストが成功します。
テストクラスその2
こんどはわざと失敗するテストを書いてみます。
def 足し算1() {
setup:
Calculator calc = new Calculator()
expect:
calc.add(1,2) == 4
}
以下のようにわかりやすいエラー表示が出力されます。
Condition not satisfied:
calc.add(1,2) == 4
| | |
| 3 false
sample.Calculator@5e316c74
予想 :4
実際 :3
リファクタリング
前処理、後処理をまとめる関数が用意されています。
- 前処理: setup(){}
- 後処理: cleanup(){}
package spock
import sample.Calculator
import spock.lang.Specification
class CalculatorSpec extends Specification {
def calc
def setup() {
calc = new Calculator()
}
def cleanup() {
calc = null
}
def 足し算1() {
expect:
calc.add(1,1) == 2
}
def 足し算2() {
expect:
calc.add(1,2) == 3
}
}
データ駆動テスト
where:を使うことで、データテーブルを使ったテストがかけます。
def "足し算:データ駆動テスト"() {
expect:
calc.add(a, b) == c
where:
a|b|c
1|1|2
2|3|5
3|4|7
}
その他
コードはgithubにもあげています。
続き
今日はここまで!