LoginSignup
7
9

More than 5 years have passed since last update.

Tmar:こんなBDD(振る舞い駆動開発)ツールがあった。

Posted at

Tmarとは

公式サイト
BDD(振る舞い駆動開発)ツール。Cucumberとか、JBehaveとか、色々あるうちの一つ。
groovyにテストフレームワークとして、めちゃめちゃ優秀なSpockっていうのがある。表形式でテストデータを記述できるので、非常にケースが読みやすい。
Spockについては下記
Spock 公式

qiitaで探しても色々ある。

TmarはJspressoというツールベンダーが開発しているみたい。
BDDを進める上で参考になる気がするので、シェア

Tamrの特徴

  • Cucumberと同じく、テストコードと別ファイル(*.text.tmar)に仕様を記述する。
  • 表形式で仕様を記述でき、テストコードではそれをテストに利用できる。
  • 表形式だけでなく、自然言語でも記述可能。
  • テストコードはgroovyで書く。
  • Eclipse Pluginがとても便利
  • テスト結果がHTMLレポートとして出力される。Living Document

sample.test.tmar
要件01_会員の年齢によって入場料が変化すること

/each 
[会員年齢 |入場料? 
| 5   | 300 

表のカラムとして文章でデータを記述
/inline 
会員年齢が[12]歳以上ならば [500]

/inline 
会員年齢が[11]歳以下ならば [300] 

テストコード

Spec01.groovy
package com.sample

class Spec001 extends Tmar4Spock {

    def test() {
        when:
        Member sut = new Member();
        sut.age = tmar.会員年齢
        tmar.入場料 = sut.fea

        then:
        //tmarによるアサーション
        tmar.asserts()
        where:
        tmar << getData('test')
    }
}

DB内のテーブルデータのアサーション

DBの状態の検証もできる。

Spec02.test.tmar
要件02_登録したテーブルの確認


データベースに登録したデータの定義
/table country
[code | name  | 
| FR  |France | 
| BR  |Brazil |    

sqlで結果を取得し、アサーション
/each 
[アサーション条件 | 結果?              | 
| 結果が含まれる |? in @country  | 
| 結果と一致する | ? match @country | 

テストコード

Spec01.groovy
package com.sample

import groovy.sql.Sql;

import org.jspresso.contrib.tmar.core.Tmar4Spock

import spock.lang.Shared;

import com.sample.tmar.Member;

class Spec002 extends Tmar4Spock {

    @Shared sql = Sql.newInstance("jdbc:postgresql://localhost:5432/postgres", "postgres", "postgres")

    def test() {

        when:
        def rows=sql.rows("SELECT code,name FROM country")
        tmar.結果 = rows

        then:
        tmar.asserts()

        where:
        tmar << getData('test')
    }
}

Tmarファイルに記述するテーブルはexcelでかいたものを貼り付けることができる。

7
9
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
7
9