Chào các bạn đã đến với chủ đề tiếp theo của mình. Hôm nay, mình sẽ tiếp tục giới thiệu đến các bạn chuỗi bài về TestNG Framework. Ở những bài trước, trong chủ đề Java Selenium , ở những ví dụ mình demo đã có sử dụng annotation @Test trong TestNG. Nhưng mình chỉ dừng lại ở mức độ là demo, có thể các bạn không hiểu nó là gì, nhưng ít nhất là các bạn có thể làm theo ví dụ đó và chạy được trên máy của mình. Trong nội dung bài này, mình sẽ giới thiệu rõ hơn TestNG là gì, cũng như cách sử dụng nó như thế nào cho đúng.
Nội dung
1. Tổng quan về TestNG
1.1. TestNG là gì?
- TestNG là một testing framework, có chức năng quản lý việc tạo test case, thứ tự chạy test case và xuất report sau khi test.
- Nó được được xây dựng trên cảm hứng của từ là JUnit (Java) và NUnit (C#). NG là viết tắt của Next Generation.
- TestNG có thể sử dụng được cho Unit test, Integration test, và End-to-end testing. Nó được phát triển bởi Cedric Beust, một kỹ sư lập trình Google.
- TestNG được viết bằng Java và nó có thể sử dụng với Java và ngôn ngữ “họ hàng” của nó như Groovy.
Các bạn có thể xem mindmap bên dưới để có cái nhìn tổng quan hơn về testNG nhé:
1.2. Các tính năng nổi bật của TESTNG
- Mô tả các thiết lập khác nhau khi kiểm thử phần mềm bằng file XML
- Phân nhóm kiểm thử
- Tạo mối quan hệ ràng buộc lẫn nhau giữa các module
- Xác lập thời điểm cho các xử lý trước và sau
- Cung cấp các chỉ dẫn Annotation – based để nhận diện phương thức test
- TestNG không yêu cầu có phương thức main()
1.3. Một số ưu điểm của TESTNG
- Nó cho phép tạo ra report sau khi thực thi xong .
- Các chú thích giúp việc kiểm thử dễ dàng hơn.
- Các trường hợp kiểm thử có thể được nhóm lại và được ưu tiên dễ dàng hơn.
- TestNG có các annotation logic hơn và dễ hiểu hơn.
- Có thể kiểm thử song song, Tạo ra các log bug, tạo data Parameterized action.
- TestNG class không yêu cầu bắt buộc khai báo BeforeClass và AfterClass.
- TestNG cho phép bạn xác định các test case phụ thuộc.
1.4. Các bước viết một test case sử dụng TESTNG
- Viết các automation test case
- Chèn các các annotation @Test của TestNG vào trước các method
- Thêm các thông tin test vào file testng.xml
- Chạy testNG
2. Cài đặt TestNG trong IntelliJ
- Đầu tiên, các bạn hãy tạo Maven project trên IntelliJ. Phần này mình đã giới thiệu ở bài 3: Cài đặt và cấu hình IntellJ. Các bạn có thể xem lại nếu chưa biết cách tạo Maven project nhé.
- Sau khi tạo project xong, các bạn hãy open file pom.xml như hình sau:
- Copy thư viện maven vào vào pom.xml. Ở đây, mình sẽ dùng version 7.8.0
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.8.0</version>
</dependency>
- Sau khi add thư viên TestNG vào file pom.xml, các bạn hãy Reload Maven Project để IntelliJ download thư viện về.
- Để kiểm tra đã add thành công hay chưa, các bạn hãy tạo 1 class mới với tên bất kỳ. Sau đó, bạn gõ @Test. Nếu IntelliJ hiển thị như hình bên dưới là OK rồi nhé.
3. 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ừ IntelliJ
Trong Run từ IntelliJ 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.
Trước khi đi vào phần ví dụ, các bạn hãy tạo 1 class mới và đặt tên nó là FirstTestCase. Sau đó, hãy copy đoạn code bên dưới:
package testNG;
import org.testng.annotations.Test;
public class FirstTestCase {
@Test
public void setup(){
System.out.println("Open browser");
}
@Test
public void login(){
System.out.println("This is login test");
}
@Test
public void teardown(){
System.out.println("Close browser");
}
}
3.1. Run theo class
Đây là cách mà chúng ta hay run.
- Open class test
- Select chuột ở line 5
- Click chuột phải chọn Run ‘FirstTestCase’
Với cách này, chỉ có thể run các method trong class đó (những method có define @Test), không thể run thêm với các methods ở class khác.
Sau khi run sẽ ra kết quả ở khung Result:
3.2. Run theo file
Đây là cách mà chúng ta sẽ run Test theo 1 file config XML. Để sử dụng cách này, đầu tiên, các bạn hãy tạo 1 file xml và đặt tên cho nó là testng.xml (các bạn có thể đặt tên khác cũng được nhé).
Sau đó hãy copy nội dung bên dưới vào file.
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite" verbose="1">
<test name="Test1">
<classes>
<class name="testNG.FirstTestCase" />
</classes>
</test>
</suite>
Trong đó:
- Dòng đầu tiên, có thể có hoặc không, nhưng nếu bạn ko có thì khi run TestNG sẽ thông báo “It is strongly recommended to add “<!DOCTYPE suite SYSTEM “http://testng.org/testng-1.0.dtd” >” at the top of your file, otherwise TestNG may fail or not work as expected.“
- TestNG bắt buộc phải có khai báo <suite> và <test>, nếu bạn bỏ 1 trong 2 cái khai báo đó thì TestNG sẽ báo lỗi. Lưu ý: <test> ở đây không phải là 1 testcase, testcase là cái viết ở Method.
- <suite> và <test> có attribute name, có thể đặt tên tùy ý.
- Một file TestNG chỉ có 1 <suite> duy nhất và <suite> có thể có nhiều <test>.
- Trong Test có thể có 0 hoặc nhiều đối tượng test: <packages>, <classes>, <methods>.
Ví dụ ở line 6 mình đang define là sẽ chạy các test case trong class FirstTestCase, class này nằm trong package testNG
Để chạy file testng.xml, các bạn hãy open file -> click phải chọn Run ‘…\testng.xml’
3.3. Run sử dụng chức năng Run Configuration của IntelliJ
- Bước 1: Select menu Run -> chọn Edit Configuration
- Bước 2: Ở phần TestNG, chọn Add New Configuation
- Bước 3: Chọn TestNG
- Bước 4: Input 1 vài thông tin như hình bên dưới
Những lần run tiếp theo chúng ta chỉ cần chọn nhanh:
4. Xuất TestNG Report
Để xuất TestNG Report, chúng ta hãy mở modal Edit Configuration như mình đã giới thiệu ở trên -> chọn tab Listener -> và check vào checkbox Use default reporters -> click Apply và OK button
Sau khi config như hình trên xong, các bạn hãy chạy lại file testng.xml 1 lần nữa. Chương trình tự động xuất testng report và để trong folder test-output (folder này sẽ được tạo sau khi chạy xong)
Các bạn hảy mở file index.html để xem kết quả nhé.
5. Lời kết
Như vậy mình đã giới thiệu tổng quan về TestNG framework cũng như cách sử dụng nó. Mình hy vọng bài viết này sẽ hữu ích cho các bạn. Cảm ơn các bạn đã theo dõi bài viết của mình. Hẹn gặp lại các bạn ở những chủ đề tiếp theo.
Nguồn:
https://giangtester.com/bai-1-testng-la-gi-va-nhung-thu-co-ban-cua-testng-ma-ban-co-the-chua-biet/
https://anhtester.com/blog/selenium-java/selenium-java-bai-9-cai-dat-va-su-dung-testng-framework