First code cucumber and Java

Hi các bạn!

Nếu ai đã đi theo BDD (Behavior Driven Development) - phát triển theo hướng hành vi thì cũng không lạ lẫm gì với Cucumber.
Hôm nay chúng ta sẽ học cách cài đặt, sử dụng cũng như viết những dòng code đầu tiên với cucumber - First code cucumber and Java
Để có thể áp dụng thành công ví dụ này, điều kiện trước tiên là cần có 1 IDE để code java (eclipse hay Idea) và máy tính đã cài sẵn JDK, tham khảo tại bài viết sau nếu các bạn chưa cài đầy đủ.
Bài hướng dẫn này tôi dùng Eclipse vì nó khá phổ biến với giới lập trình java
Nội dung bài viết như sau:
  1. Cài plugin Cucumber cho Eclipse
  2. Tạo project với Maven
  3. Tạo file feature chứa các hành vi của người dùng

Cài đặt cucumber cho eclipse:

Từ menu Help -> Eclipse Marketplace. Sau đó tìm kiếm với từ khoá cucumber và cài đặt - nhớ restart Eclipse để hoàn tất quá trình cài


> Tạo Project với Maven

Tiếp theo chúng ta sẽ tạo 1 project Maven từ menu File của eclipse như sau
File -> New -> Other


chọn Maven Project -> Next



Tiếp đó ta làm theo các bước như trong ảnh


  • Group ID thì thường hay điền kiểu tên miền như vậy
  • Artifact ID là tên của project
  • Version thì mặc định cũng đc
Tại project vừa tạo, click đúp vào file POM.XML và chọn tab pom.xml như trong ảnh, thêm đoạn code sau vào trước dòng </project>



> Định nghĩa file Feature

Tại thư mục src/test/resources, tại 1 file có định dạng demo.feature như sau:


Feature: Demo feature

  Scenario: Finding some cheese
    Given I am on the Google search page
    When I search for "Cheese"
    Then the page title should start with "cheese"
Sau đó thêm file feature , rồi chuột phải vào file để tự tạo ra đoạn code có các phương thức theo các step đã được định nghĩa sẵn

Tiếp đó thì viết code cho các phương thức đó như sau:

package democucumberr;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;

import cucumber.api.java.After;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class Demo {
 WebDriver driver = new FirefoxDriver();

 @Given("I am on the Google search page")
 public void i_am_on_the_Google_search_page() {
  driver.get("https:\\www.google.com");
 }

 @When("I search for {string}")
 public void i_search_for(String string) {
  WebElement element = driver.findElement(By.name("q"));
  element.sendKeys(string);
  element.submit();
 }

 @Then("the page title should start with {string}")
 public void the_page_title_should_start_with(String string) {
  new WebDriverWait(driver, 10L).until(new ExpectedCondition<Boolean>() {
   public Boolean apply(WebDriver d) {
    return d.getTitle().toLowerCase().startsWith("cheese");
   }
  });
 }

 @After()
 public void closeBrowser() {
  driver.quit();
 }
}
Tiếp tục quay lại file feature, chạy với Cucumber để xem kết quả


Muốn chạy với Junit thì cần tạo ra 1 class mới như sau

package democucumberr;

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

@RunWith(Cucumber.class)
@CucumberOptions(features = "C:\\Users\\hainv\\My Documents\\LiClipse Workspace\\democucumberr\\src\\test", plugin = {
  "pretty", "html:target/cucumber-html-report" }, tags = {})
public class Runner {

}


sau đó chạy file Runner với Junit để có kết quả ( chuột phải vào khung soạn thảo code của Runner.java, chọn Run As -> Junit)
Các bạn có thể tải project demo tại đây để em chi tiết
Hẹn gặp các bạn ở bài tiếp theo

0 comments:

Post a Comment