LoginSignup
13
14

More than 5 years have passed since last update.

CSVファイルをINPUTにしたSpockのデータ駆動テスト

Last updated at Posted at 2014-09-10

前回の記事の内容(Geb自動キャプチャ)を会社の新人くんに伝授し、ツールを作ってもらっていたところ、「Spockのデータ駆動テストでINPUTにしてるパラメータをCSVファイルにしたいです」と相談されてやってみたことのメモ。意外にはまりました。

1. 単純にファイルを読み込んで1行まるっと渡してみる

where :
    parameter << new File(“input.csv”).getText().split( “\r\n” ) 

ダメ。

よくよく調べるとわかりますが

自前のデータ・プロバイダを書くのはとても簡単で, 二つのメソッド next() と hasNext() (java.lang.Iterable で定義されている), size() と close() (こっちはなくてもいい) を実装するだけでOK!

とのこと。Iterableじゃないとダメなようです。


ということでGroovyCSVを試してみました。

2. GroovyCSVを使う

build.gradleのdependencyに追加。

testCompile "com.xlson.groovycsv:groovycsv:1.0"

先日のソースをCSVインプットにするよう改良。
sample.csvをINPUTに自動キャプチャを実行します。

input/sample.csv
geb,groovy
spock,junit
CsvSampleSearchGeb.groovy
package geb.nyasba.sample.story

import com.xlson.groovycsv.CsvParser
import geb.nyasba.sample.page.TopPage
import geb.spock.GebReportingSpec
import spock.lang.Unroll

@Unroll
class CsvSampleSearchGeb extends GebReportingSpec{

    def "#csvRecord.val1と#csvRecord.val2でBIGLOBE検索を行う"( def csvRecord ){

        expect:
            // TopPage にアクセスする
            to TopPage

            // TopPage にアクセスできたことを確認
            at TopPage

            // 検索キーワードにkeywordを入力
            searchKeyword.value( csvRecord.val1 + " " + csvRecord.val2 )

            // TOP画面をキャプチャにとる
            report("検索画面")

            // 検索ボタンをクリック
            searchButton.click()

            // 終了(この時点のキャプチャも自動的に取られている)

        where :
            // expectの処理を以下のパラメータ(keyword)で何度も繰り返す。複数定義も可能
            // input/sample.csvを読み込む。先頭行も取得する。カラムはval1,val2とする
            csvRecord << new CsvParser().parse( 
                                new FileReader("input/sample.csv"),
                                readFirstLine: true,
                                columnNames:["val1", "val2"]
                            )
    }
}

試したソースはこちらを参照ください。
https://github.com/nyasba/gebsample

13
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
14