More Related Content
Similar to Spock's world (20)
Spock's world
- 10. そこで Spock ですよ
class HelloSpock extends spock.lang.Specification {
def "length of Spock's and his friends' names"() {
expect:
name.size() == length
where:
name | length
"Spock" | 5
"Kirk" | 4
"Scotty" | 6
}
}
- 12. JUnit との比較
JUnit Spock
記述言語 Java Groovy
テストの自動化 ◎ ◎
Eclipse 標準装備 ◎ △
技術情報 ◎ △
モックの仕組み △ ◎
パラメタライズド △ ◎
仕様テスト × ◎
- 15. テストクラスの構造
org.junit.runner.Runner
@RunWith(Sputnik.class)
を継承
Specification
HelloSpec
フィクスチャメソッド()
フィーチャメソッド()
ヘルパーメソッド()
- 16. 処理の流れ
テスト 字句解析 コード バイト テスト
AST変換
コード 構文解析 生成 コード 実行
- 17. 処理の流れ
• DSL の解析
• モック/例外実装の追加
• メタ情報の追加
• モデルの構築
テスト 字句解析 コード バイト テスト
AST変換
コード 構文解析 生成 コード 実行
- 20. ブロック
ブロック名 フェーズ 概要
フィーチャの設定作業(前提条件)を記述す
setup / given Setup
る。先頭に記述する必要がある。
テスト対象の振る舞いを記述する。then
when Stimulus
ブロックとセットで使用する必要がある。
when ブロックに対する条件、例外条件、
then Response
インタラクションを記述する。
Stimulus / 条件を記述する。then ブロックよりも記述
expect Response 制限がある。
フィーチャ内でのリソースの解放作業を記述
cleanup Cleanup
する。
データドリブンテストの場合に記述する。
where -
フィーチャの最後に記述する必要がある。
- 23. テストダブル (Mock/Stub/Spy)
インタラクションの代役を生成
Java / Groovy オブジェクト用の API
任意の代役を表現するワイルドカードも使える
Stub の振る舞い
http://yamkazu.hatenablog.com/entry/2012/10/20/222558
テストダブルの詳細 http://xunitpatterns.com/Test%20Double%20Patterns.html
- 33. 拡張処理の流れ
テスト 字句解析 コード バイト テスト
AST変換
コード 構文解析 生成 コード 実行
- 34. 拡張処理の流れ
•実行コンテキストの構築
•グローバル拡張の適用
テスト 字句解析 コード バイト テスト
AST変換
コード 構文解析 生成 コード 実行
- 35. 拡張処理の流れ
• アノテーション
ドリブン拡張の適用
•実行コンテキストの構築
•グローバル拡張の適用
テスト 字句解析 コード バイト テスト
AST変換
コード 構文解析 生成 コード 実行