Đây là series về Framework TestNG, mặc dù mọi người đã nghe, đã thấy, đã dùng từ lâu nhưng có thể có những cái mà mọi người còn chưa rõ hoặc kiến thức đang bị lộn xộn, chưa hệ thống. Hãy đọc series này để xây dựng kiến thức vững vàng về TestNG và để cảm thấy yên tâm khi chém gió hoặc phỏng vấn.
Với những người lần đầu biết đến TestNG:
TestNG là 1 framework test, nó quản lý việc tạo test suite / test case, thứ tự run test và report sau khi run test xong.
I. Những điều ai cũng biết
TestNG được xây dựng từ cảm hứng của 2 Framework họ xUnit là JUnit (Java) và NUnit (C#). NG là viết tắt của từ Next Generation.
TestNG có thể sử dụng được cho Unit, Integration, và End-to-end testing. Nó được phát triển bởi Cedric Beust (nhìn cái tên này lại nhớ đến cái link cài TestNG ở bài 2). TestNG gọi là Next Generation vì nó có 1 vài điểm vượt trội hơn so với ông anh JUnit:
- Có nhiều loại annotation After và Before
- Tính năng Run test phụ thuộc (ví dụ điều kiện run B là bắt buộc run A trước)
- Có khả năng group các test methods
- Chạy Multithread
- Report bằng HTML
II. Những điều mà có thể bạn không biết
TestNG được viết bằng Java và nó có thể sử dụng với Java và ngôn ngữ “họ hàng” với Java như Groovy.
TestNG sẽ config suites và tests thông qua file XML, thông thường lấy tên là sentayho.com.vn nhưng mà tên nào cũng được.
TestNG sẽ cho phép bạn config để nhặt ra những packages / Classes / Methods mà bạn muốn hoặc không muốn run. Ngoài ra, nó còn thể nhóm những test Methods ở các Classes khác nhau thành 1 Group, và group này có thể run hoặc ko run tùy vào config.
Cho phép điền parameters vào các test Methods để linh hoạt hơn việc fix cứng các param trong code.
TestNG còn có cả public API dành cho ai muốn add thêm functions hoặc extensions.
III. Cách run test bằng TestNG
TestNG có 2 cách run cơ bản:
- Run từ command line (mình sẽ nói ở bài khác)
- Run từ Eclipse
Trong Run từ Eclipse thì lại có 1 vài kiểu:
- Run theo class
- Run theo file
- Run sử dụng chức năng Run Configuration của Eclipse.
1.Run theo Class
Đây là cách mà chúng ta hay run.
- Open class test
- Chuột phải chọn Run As
- Chọn TestNG Test
Với cách này, chỉ có thể run các method trong class đó, không thể run thêm với các methods ở class khác.
Sau khi run sẽ ra kết quả ở khung Result TestNG:
Ở đây ta sẽ thấy có 2 chỗ có chữ Default suite và Default test vì:
- Ta đang run với config mặc định
- TestNG là FW test nên nó chỉ quan tâm đến 2 điều: 1 là suite, 2 là test. Những cái như Group, Package, Class chỉ là đối tượng test. (Sẽ nói rõ hơn vào các bài sau).
2. Run theo file
Đây là cách mà ta sẽ run Test theo 1 file config XML. Ví dụ 1 file TestNG có dạng như sau:
Ta run nó như cách ở trên nhưng đối tượng là file XML chứ ko phải là class. Ở các bài sau mình chỉ tập trung học vào dạng này.
3. Run sử dụng chức năng Run Configuration của Eclipse
Thực ra việc Run theo Class là Run Configuration nhưng để ở chế độ mặc định và Run Configuration là run theo file, chỉ khác là mình sẽ có form nhập thông tin chứ ko dùng file XML.
Những lần run tiếp theo ta chỉ cần chọn nhanh:
IV. Tổng kết
Chốt lại, 3 cách trên chung quy lại cũng chỉ là 1 cách, với 3 hình thức thực hiện khác nhau. =)))) Bạn dùng cách nào cũng được, nhưng ta nên dùng chúng 1 cách linh hoạt. ví dụ:
- Ta dùng loại 1 khi muốn run nhanh 1 Class (và chỉ 1 class thôi) nào đó để xem ta viết script đúng chưa.
- Ta dùng loại 2 để config toàn bộ project, chia thành từng loại theo kiểu test, ví dụ 1 file cho smoke test, gồm nhiều test case từ nhiều class
- Ta dùng loại 3 để config nhanh thay cho loại 2, và ta muốn run ngay trên Eclipse. Loại này khác loại 1 ở chỗ, nó có thể config nhiều loại hơn.