Trong bài viết này, mình chỉ tổng hợp các bước để hiểu sơ lược về SpecFlow, và các bước để tạo 1 project .NET Core để thực thi SpecFlow. Với góc độ của 1 .NET programmer, mình chỉ mong muốn đây là bài tổng hợp thật rõ ràng và đơn giản.
Đầu tiên bạn cần nắm các khái niệm về TDD, BDD, và đây là nền tảng cơ sở để bắt đầu làm việc với SpecFlow, 1 .NET framework thực thi BDD, dựa trên ngôn ngữ C# và Gherkin.
Để hiện thực hóa BDD và Gherkin, chúng ta dùng SpecFlow
Tạo mới 1 project MSTest Test Project (.NET Core). Xóa file UnitTest1.cs.
Cài đặt các packages sau:
Nhấp phải folder Features, chọn Add=> Class
File feature mới sẽ có nội dung như sau:
Chọn đường dẫn lưu vào thư mục Steps với tên file: CalculatorSteps.cs
Link download: https://www.mediafire.com/file/wos3g9e21r57xkz
https://viblo.asia/p/cucumber-co-ban-ngon-ngu-gherkin-jamoG8ndRz8P
https://www.mediafire.com/file/wos3g9e21r57xkz/SpecFlowTutorial.rar/filehttps://www.mediafire.com/file/wos3g9e21r57xkz/SpecFlowTutorial.rar/filehttps://www.mediafire.com/file/wos3g9e21r57xkz/SpecFlowTutorial.rar/file
Chúc các bạn thành công
Nhatkyhoctap's blog
Đầu tiên bạn cần nắm các khái niệm về TDD, BDD, và đây là nền tảng cơ sở để bắt đầu làm việc với SpecFlow, 1 .NET framework thực thi BDD, dựa trên ngôn ngữ C# và Gherkin.
TDD là gì
TDD (Test Driven Development) là một phương thức làm việc, hay một quy trình viết mã hiện đại. Lập trình viên sẽ thực hiện thông qua các bước nhỏ (BabyStep) và tiến độ được đảm bảo liên tục bằng cách viết và chạy các bài test tự động (automated tests). Quá trình lập trình trong TDD cực kỳ chú trọng vào các bước liên tục sau:- Viết 1 test cho hàm mới. Đảm bảo rằng test sẽ fail.
- Chuyển qua viết code sơ khai nhất cho hàm đó để test có thể pass.
- Tối ưu hóa đoạn code của hàm vừa viết sao cho đảm bảo test vẫn pass và tối ưu nhất cho việc lập trình kế tiếp
- Lặp lại cho các hàm khác từ bước 1
BDD là gì?
Behavior Driven Development (BDD) là một phần mở rộng của TDD. Giống như ở TDD, trong BDD chúng ta cũng viết các bài test trước và sau đó mới code ứng dụng để vượt qua những bài test đó. Sự khác biệt chính của BDD so với TDD chính là:- Các bài test hay các test case sẽ được viết bằng ngữ pháp tiếng Anh và mô tả rất đơn giản
- Các bài test được xem như là hành vi của ứng dụng dựa trên những nhu cầu thực tế của người dùng với ứng dụng đó
- Sử dụng các ví dụ để làm rõ các yêu cầu của ứng dụng
Gherkin là gì?
Gherkin là một ngôn ngữ đơn giản, nhẹ và có cấu trúc, sử dụng ngôn ngữ nói thông thường để mô tả các yêu cầu và kịch bản. Theo ngôn ngữ thông thường, chúng tôi có nghĩa là tiếng Anh, tiếng Pháp và khoảng 30 ngôn ngữ nữa.Để hiện thực hóa BDD và Gherkin, chúng ta dùng SpecFlow
SpecFlow
Cài đặt
Bạn cần cài đặt các công cụ sau:- Visual Studio 2019
- SpecFlow for Visual Studio 2019: https://marketplace.visualstudio.com/items?itemName=TechTalkSpecFlowTeam.SpecFlowForVisualStudio
Ví dụ
Trong dự án này, bạn cần tạo 2 projects:- Class Library: Project này chỉ chứa hàm Add để cộng 2 số
- MSTest Test Project (.NET Core): dùng để chạy SpecFlow để kiểm tra kết quả 2 số
public class Calculator
{
public int FirstNumber { get; set; }
public int SecondNumber { get; set; }
public int Add()
{
return FirstNumber + SecondNumber;
}
}
Tạo mới 1 project MSTest Test Project (.NET Core). Xóa file UnitTest1.cs.
Cài đặt các packages sau:
- SpecFlow
- SpecFlow.Tools.MsBuild.Generation
- SpecRun.SpecFlow
Nhấp phải folder Features, chọn Add=> Class
File feature mới sẽ có nội dung như sau:
Feature: Calculator
In order to avoid silly mistakes
As a math idiot
I want to be told the sum of two numbers
@mytag
Scenario: Add two numbers
Given I have entered 50 into the calculator
And I have entered 70 into the calculator
When I press add
Then the result should be 120 on the screen
Bạn cần sửa lại câu phát biểu sau And thành
And I have also entered 70 into the calculator
Nhấp phải vào file Calculator.feature, chọn Generate Step Definitions.Chọn đường dẫn lưu vào thư mục Steps với tên file: CalculatorSteps.cs
[Binding]
public class CalculatorSteps
{
private Calculator calculator = new Calculator();
private int result;
[Given(@"I have entered (.*) into the calculator")]
public void GivenIHaveEnteredIntoTheCalculator(int number)
{
calculator.FirstNumber = number;
}
[Given(@"I have also entered (.*) into the calculator")]
public void GivenIHaveAlsoEnteredIntoTheCalculator(int number)
{
calculator.SecondNumber = number;
}
[When(@"I press add")]
public void WhenIPressAdd()
{
result = calculator.Add();
}
[Then(@"the result should be (.*) on the screen")]
public void ThenTheResultShouldBeOnTheScreen(int expectedResult)
{
Assert.AreEqual(expectedResult, result);
}
}
Mở Test Explorer để kiểm tra kết quả.Link download: https://www.mediafire.com/file/wos3g9e21r57xkz
Link tham khảo:
https://www.toolsqa.com/specflow/step-definition-file/https://viblo.asia/p/cucumber-co-ban-ngon-ngu-gherkin-jamoG8ndRz8P
https://www.mediafire.com/file/wos3g9e21r57xkz/SpecFlowTutorial.rar/filehttps://www.mediafire.com/file/wos3g9e21r57xkz/SpecFlowTutorial.rar/filehttps://www.mediafire.com/file/wos3g9e21r57xkz/SpecFlowTutorial.rar/file
Chúc các bạn thành công
Nhatkyhoctap's blog
Nhận xét
Đăng nhận xét