Nội dung bài viết
I. Fluent-Interface là gì?
Từ đầu series đến giờ, các bạn đã nghe nhiều đến Fluent-Interface, giờ mình sẽ giải thích ngắn gọn về nó:
Fluent-Interface là cách design API để làm những việc phức tạp, nhiều bước dưới dạng văn xuôi, gần gũi với con người.
Fluent-Interface thường dùng technique Method Chaining, ví dụ như:
- Stream API của Java 8
Q: Vì sao lại áp dụng Fluent Interface vào trong UI Testing?
A: Vì UI Testing có 1 pattern khá giống nhau:
- Thực hiện Action A rồi B rồi C …
- Sau đó, kiểm tra kết quả ở các element
Do đó, ta có thể viết pattern thành 1 cái flow, rõ ràng từng bước, phù hợp với ý nghĩa của Fluent Interface
II. Áp dụng Fluent-Interface vào trong Test
Từ bài 2, code của test sẽ có hình dạng như sau
class LoginSpec3 extends BaseTest3{ LoginPage login = getLoginPage(); HomePage home = getHomePage(); @Test public void admin_login_successfully(){ login.act().inputUsername("giang") .inputPassword("12345678") .submit(); home.verify().isRightURL(); } }
Mình sẽ phân tích từng đoạn code:
LoginPage login = getLoginPage(); HomePage home = getHomePage();
Đây là đoạn khởi tạo 2 pages, mình sử dụng phương pháp Static Method để khởi tạo, thay vì sử dụng trực tiếp Constructor, đây là cách được nói trong cuốn Effective Java của Joshua Bloch.
public void admin_login_successfully(){ login.act().inputUsername("giang") .inputPassword("12345678") .submit(); home.verify().isRightURL(); }
login và home ở đây đóng vai trò như các Class Factory, giúp gọi đến các function cần thiết, nó sẽ không chứa logic gì của business cũng như tương tác với selenium API:
login.act()
—> returnloginActController
home.verfiy()
—> returnhomeVerifyController
III. Tổng kết
Bài sau mình sẽ hướng dẫn cách viết từng Class, và bạn sẽ thấy nó sẽ rất dễ thôi. Nếu không dễ thì chắc bạn học lại lập trình Java cơ bản là được. =)))))) Nếu đọc mà không hiểu thì hãy comment ở phía dưới nhé, mình sẽ giải thích và sửa lại bài viết.
[…] ← Previous Next → […]