ในบทความนี้ เราจะเรียนรู้ขั้นตอนการสร้าง Feature File สำหรับ Cucumber ใน Java โดยใช้ Eclipse IDE
Feature File คืออะไร?
Feature File เป็นไฟล์ที่เขียนเป็นภาษา Gherkin (Given/When/Then) อธิบายพฤติกรรมของระบบในรูปแบบที่อ่านง่าย ใช้เป็นเอกสารและ Test Case พร้อมกัน
ขั้นตอนการสร้าง (Step-by-Step)
ขั้นตอนที่ 1: สร้าง Maven Project (เหมือน Step Definition)
- File → New → Other → Maven Project
- เลือก maven-archetype-quickstart
- Group Id:
Automation, Artifact Id:Cucumber
ขั้นตอนที่ 2: สร้าง Package สำหรับ Features
- คลิกขวาที่
src/test/java→ New → Package - ชื่อ Package:
features - คลิก Finish
ขั้นตอนที่ 3: สร้าง Feature File
- คลิกขวาที่ Package
features→ New → File - ชื่อไฟล์:
Login.feature(ต้องลงท้าย .feature) - คลิก Finish
ขั้นตอนที่ 4: เขียน Feature File (Gherkin Syntax)
# language: en
Feature: User Login Functionality
As a registered user
I want to login to the application
So that I can access my dashboard
Background:
Given User is on the login page
Scenario: Successful login with valid credentials
When User enters valid username "john.doe" and password "password123"
And User clicks on login button
Then User should be redirected to dashboard
And User should see welcome message "Welcome John"
Scenario: Failed login with invalid password
When User enters valid username "john.doe" and password "wrongpass"
And User clicks on login button
Then User should see error message "Invalid credentials"
And User should remain on login page
Scenario Outline: Login with multiple users
When User enters username "" and password ""
And User clicks on login button
Then User should be logged in
Examples:
| username | password |
| user1 | pass1 |
| user2 | pass2 |
| admin | admin123 |
คำสำคัญใน Gherkin (Keywords)
| Keyword | คำอธิบาย |
|---|---|
| Feature | คุณสมบัติหลักของระบบ |
| Background | ขั้นตอนก่อน Scenario ทุกอัน (รันทุกครั้ง) |
| Scenario | กรณีทดสอบเดี่ยว |
| Scenario Outline | กรณีทดสอบแบบ Parameterized (ใช้กับ Examples) |
| Examples | ตารางข้อมูลสำหรับ Scenario Outline |
| Given | เงื่อนไขก่อนทดสอบ (Precondition) |
| When | การกระทำ (Action) |
| Then | ผลลัพธ์ที่คาดหวัง (Outcome) |
| And / But | ต่อยอดขั้นตอน (อ่านง่ายขึ้น) |
การเชื่อมกับ Step Definitions
สร้าง Runner Class:
package runners;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/java/features",
glue = "stepDefinitions",
plugin = {"pretty", "html:target/cucumber-reports"}
)
public class TestRunner { }
โครงสร้างโปรเจกต์สมบูรณ์
Cucumber/
├── pom.xml
└── src/test/java/
├── features/
│ └── Login.feature
├── stepDefinitions/
│ └── StepDefinition.java
└── runners/
└── TestRunner.java