KEIS BLOGは株式会社ケイズ・ソフトウェアが運営しています。

KEIS BLOG

Cucumberを使ってみるテスト①


こんにちは!

最近はダイエットのためにランニングを始めてみました。
1回10kmを目標にゆっくりと走っていますが、意外と走れてびっくりしました。
走った後にゆっくりお風呂に入るのが気持ちいいですね。

—–
さて今回はCucumberについて考察してみます。
きゅうり味のコーラじゃありませんよw
仕事上で使用することになったので色々調べてみました。

fujikawa01

・Cucumberとは
CucumberとはRuby製のテストツールです。
アプリケーションの振る舞いをテストできます。
Gherkinという簡単な言語で記述したテストケースを実行するツールです。
日本語でテストケースを書くこともできます。

・Cucumberの構造
Cucumberを利用するために、記述すべきファイルは2種類あります。
①Featureファイル
 →テストのシナリオを書くファイル
②Stepファイル
 →シナリオの動作を定義するファイル

・Cucumberを使用したテストシナリオ
Cucumberのテストシナリオは、GherkinというDSLで書きます。
主に「Given、When、Then」というステップがあります。
 Given:前提
 When:処理内容
 Then:その結果(に対する検証)
という理解をしていただければ良いと思います。
英語でのコマンドが日本語で何になるかは下記のコマンドで調べることができます。

$ cucumber --i18n ja
      | feature          | "フィーチャ", "機能"|
      | background       | "背景"|
      | scenario         | "シナリオ"|
      | scenario_outline | "シナリオアウトライン", "シナリオテンプレート", "テンプレ", "シナリオテンプレ" |
      | examples         | "例", "サンプル"|
      | given            | "* ", "前提"|
      | when             | "* ", "もし"|
      | then             | "* ", "ならば"|
      | and              | "* ", "かつ"|
      | but              | "* ", "しかし", "但し", "ただし"|
      | given (code)     | "前提"|
      | when (code)      | "もし"|
      | then (code)      | "ならば"|
      | and (code)       | "かつ"|
      | but (code)       | "しかし", "但し", "ただし"|

・Featureファイル
Featureファイルに処理の目的や内容を書いておき、それを正規表現のパターンマッチングで拾い上げることで
実施すべきテストコードを判別しているのである。
また、その際に処理に使う引数を後方参照で取り出すことも可能です。
下記のような記述になります。

Feature: Cucumberのテスト
	Scenario: テストのシナリオ
		Given ページを表示する
		Then "Hello World"と表示されていること

・Stepファイル
StepファイルはFeatureに記述したシナリオをどのように実行するかを定義します。
下記のように記述します。

package test;

import static org.junit.Assert.*;
import cucumber.api.java.ja.Given;
import cucumber.api.java.ja.Then;
import test.connector.WebConnector;

public class WebSteps {

	private WebConnector connector;

	public WebSteps(WebConnector connector) {
		this.connector = connector;
	}
	

	@Given("^ページを表示する$")
	public void ページを表示する() {
		connector.openAndWait("http://localhost:8080/cucumber-example/");
	}

	@Then("\"([^\"]*)\"と表示されていること$")
	public void と表示されていること(String pattern) {
		assertTrue(connector.isTextPresent(pattern));
	}
}

・実行するためのClass
テストを実行するためだけのクラスを作成します。
フィールドもメソッドも持たず、Annotationの@RunWithでCucumber.classを指定するだけです。
このクラスを実行すると、パッケージ配下(サブパッケージ含む)のシナリオ(「.feature」ファイル)と
テストコードが紐付けられてテストが実行されます。

package test;

import org.junit.runner.RunWith;

import cucumber.api.junit.Cucumber;

@RunWith(Cucumber.class)
public class CucumberTest {
}

このような構成でテストを記述することができます。

簡単ですが「Cucumberとはどのようなものか」から調査してみました。
実際のテストは次回以降で実行してみたいと思います。

【関連記事】
SOAPUIの便利な使い方①
SOAPUIの便利な使い方②
SOAPUIの便利な使い方③
SOAPUIの便利な使い方④
SOAPUIの便利な使い方⑤
SOAPUIの便利な使い方⑥
JavaWebServerを使ってみるテスト
Splunkを使ってみよう!
SOAPUIの便利な使い方⑦
捨てる前にできること
eclipseでSoapUIを動かしてみる
マウスにもこだわりを
WindowsでDockerを使ってみよう①
忘れがちなGitコマンド
AWSを使ってみる
ヘッドフォンの選び方