これはなに?

最終形

まずは、どう作るかは別にして、最終的にテストをできる形になったものを示す

テスト資産を俯瞰

files.png

テスト対象のプロダクトコード (App.java)

package com.mycompany.cucumberexam;

import lombok.Data;

@Data
public class App {
    
    private int stock;
    
    public boolean order(int amount) {
        if (amount <= stock) {
            stock = stock - amount;
            return true;
        }
        return false;
    }
}

テストフィーチャ (example.feature)

#language: ja
フィーチャ: 受注業務
  シナリオ: 受注成立
    前提 在庫数が 20 である
    もし 10 個注文する
    ならば 受注が成立する
    ならば 在庫数が 10 になる
  シナリオ: 受注失敗
    前提 在庫数が 10 である
    もし 20 個注文する
    ならば 受注が失敗する
    ならば 在庫数が 10 になる

テストコード (AppTest?)

package com.mycompany.cucumberexam;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(
        features = {"src/test/resources/features/example.feature"},
        format = {"pretty"},
        monochrome = true
)
public class AppTest {
}

Step Definition (ExampleStepDefs?)

package com.mycompany.cucumberexam;

import cucumber.api.java.ja.ならば;
import cucumber.api.java.ja.もし;
import cucumber.api.java.ja.前提;
import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.equalTo;

public class ExampleStepDefs {

    private App app = new App();
    private boolean result;
    
    @前提("^在庫数が (\\d+) である$")
    public void 在庫数が_である(int arg1) throws Throwable {
        app.setStock(arg1);
    }

    @もし("^(\\d+) 個注文する$")
    public void 個注文する(int arg1) throws Throwable {
        result = app.order(arg1);
    }    

    @ならば("^受注が成立する$")
    public void 受注が成立する() throws Throwable {
        assertThat(result, is(equalTo(true)));
    }

    @ならば("^在庫数が (\\d+) になる$")
    public void 在庫数が_になる(int arg1) throws Throwable {
        assertThat(app.getStock(), is(equalTo(arg1)));
    }

    @ならば("^受注が失敗する$")
    public void 受注が失敗する() throws Throwable {
        assertThat(result, is(equalTo(false)));
    }

}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mycompany</groupId>
    <artifactId>CucumberExam</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>CucumberExam</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>1.1.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>1.1.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.12.4</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.16</version>
            </plugin>
        </plugins>
    </build>
</project>

テスト結果

tests.png

Spec Definition を作る

シナリオテンプレート


Java#xUNIT


添付ファイル: filetests.png 258件 [詳細] filefiles.png 245件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   sitemap
Last-modified: 2014-06-23 (月) 22:58:34 (894d)
ISBN10
ISBN13
9784061426061