Get in touch
or send us a question?
CONTACT

Cài đặt và sử dụng TestNG Framework

NỘI DUNG BÀI HỌC

Cài đặt và sử dụng TestNG cho Eclipse hoặc IntelliJ và chạy code theo cấu trúc TestNG Framework.


1. Tổng quan về TestNG

TestNG là 1 công cụ kiểm thử tự động được viết bằng Java, có chức năng quản lý việc tạo test case, thứ tự chạy test case và report sau khi test.

TestNG được xây dựng từ cảm hứng của 2 Framework là JUnit (Java) và NUnit (C#). NG là viết tắt của từ Next Generation.

Xem mindmap để có cái nhìn tổng quan hơn về testNG

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()
  • Các phương thức không cần tĩnh (static)

Một số ưu điểm của TestNG

  • Nó cho phép tạo ra các bản báo cáo HTML của tiến trình thực thi.
  • 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 cho phép bạn xác định các test case phụ thuộc.

Các bước viết một test case sử dụng TestNG

  • Viết các test case theo logic của phần cần kiểm thử 
  • Chèn các các chú thích của TestNG
  • Thêm các thông tin bài test của bạn trong file testng.xml
  • Chạy testNG


2. Cài đặt TestNG trong Eclipse

Eclipse là một trong những IDE rất phổ biến để phát triển test trong Java.

Và để sử dụng testNG, không phải là sẽ tải về và cài đặt như một tool, mà sẽ giống như một cái phần mềm nho nhỏ được cài đặt tích hợp trong Eclipse.

Để cài đặt thành công TestNG thì chúng ta cần chuẩn bị:

  • Cài đặt môi trường Java (bài 1)
  • Cấu hình Java (bài 1)
  • Cài đặt Eclipse (bài 1)
  • Cài đặt Selenium Webdriver (bài 4) – Có thể cài sau TestNG vẫn được
  • Cài đặt TestNG


Bắt đầu nhé


1. Mở Eclipse IDE lên -> click Help > Eclipse Marketplace

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

2. Gõ TestNG và nhấn Go để tìm kiếm framework như hình bên dưới
3. Nhấn Install để cài đặt


Tiến trình đang chạy để xác nhận chọn gói TestNG for Eclipse:

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

    4. Các bạn nhấn chọn hết và “Confirm” để xác nhận bước tiếp theo

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

     5. Chọn “I accept…” và nhấn “Finish


Nếu có cửa sổ bật lên xác nhận như hình bên dưới thì các bạn chọn “Install anyway

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Chờ cho đến khi cài đặt xong và khởi động lại TestNG là được

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Sau khi khởi động lại, hãy xác minh xem TestNG có thực sự được cài đặt thành công hay không.
Bấm vào Window > Show View > Other

Sau đó, mở thư mục Java và xem TestNG có hiện lên chưa.

HOÀN TẤT RỒI CÒN GÌ NỮA ĐÂU :))


3. Sử dụng TestNG

3.1 Tạo Test Case bằng cách sử dụng chú thích TestNG

Bây giờ, chúng ta sẽ tìm hiểu cách tạo test case đầu tiên của mình bằng cách sử dụng Chú thích (Annotation) TestNG trong Selenium

Trước tiên chúng ta tạo một Project TestNG mới trong Eclipse và đặt tên là “FirstTestNGProject”.

Thiết lập một Project TestNG mới

Bước 1: Nhấp vào File > New > Java Project

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Bước 2: Gõ “FirstTestNGProject” làm Tên dự án, sau đó nhấp vào Next.

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Bước 3: Bây giờ chúng ta sẽ bắt đầu thêm Thư viện TestNG vào dự án của mình. Nhấp vào tab “Libraries“, sau đó nhấp vào “Add Library…

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Bước 4: Trên hộp thoại Thêm Thư viện, chọn “TestNG” và nhấp vào Next.

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Bước 5: Nhấp vào Finish.

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Bạn sẽ thấy TestNG hiển thị trong danh sách Libraries.

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Bước 6: Bây giờ chúng ta sẽ thêm các tệp JAR có chứa API Selenium. Vào đây tải https://www.selenium.dev/downloads/ 
Phần này chúng ta đã cài đặt Selenium vào Eclipse bài trước chắc quen rồi. Quên thì lật lại coi :))
=> [Selenium Java] Lesson 4: Cài đặt môi trường Selenium với Java

Bước 7: Nhấp vào Apply và Close.

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester


Cách tạo file class test mới với TestNG

Bước 1: Nhấp chuột phải vào thư mục gói “src” rồi chọn New > Other

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Bước 2: Nhấp vào thư mục TestNG và chọn tùy chọn “TestNG class“. Nhấn Next.

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Bước 3: Nhập các giá trị như mẫu bên dưới và nhấp vào Finish.

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Eclipse sẽ tự động tạo mẫu cho tệp TestNG cho chúng ta như hiển thị bên dưới.

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester


Code mẫu chạy thử nào:

package testngpackage;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class AutomationTestNG {

    public String baseUrl = "https://anhtester.com";

    String driverPath = "D:\\TESTER\\SeleniumJava\\Setup\\chromedriver.exe";
    System.setProperty("webdriver.chrome.driver", driverPath);    
    public WebDriver driver ; 
     
  @Test
  public void verifyHomepageTitle() {
	
      driver = new ChromeDriver();
	    
      driver.manage().window().maximize();
        
      driver.navigate().to(baseUrl);
      Thread.sleep(2000);

      String expectedTitle = "Anh Tester - Automation Testing";
      String actualTitle = driver.getTitle();

      Assert.assertEquals(actualTitle, expectedTitle);

      Thread.sleep(2000);
      driver.quit();
  }
}

JavaCopy

  • TestNG không yêu cầu bạn phải có phương thức main ().
  • Các phương thức không cần phải tĩnh.
  • Chúng ta đã sử dụng chú thích @Test. (@Test được sử dụng để cho biết rằng phương thức bên dưới nó là một trường hợp thử nghiệm)

Chạy thử nghiệm

Để chạy thử nghiệm, chỉ cần chạy tệp trong Eclipse như bạn thường làm. Eclipse sẽ cung cấp hai đầu ra
– Một trong cửa sổ Console
– Một trên cửa sổ TestNG Results.

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester
[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester


Kiểm tra các Report được tạo bởi TestNG

Cửa sổ Console trong Eclipse cung cấp một báo cáo dựa trên văn bản về kết quả trường hợp thử nghiệm của chúng tôi trong khi cửa sổ Kết quả TestNG cung cấp cho chúng ta một báo cáo đồ họa.

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Tạo HTML Report

TestNG có khả năng tạo báo cáo ở định dạng HTML.

Bước 1: Sau khi chạy FirstTestNGFile mà chúng ta đã tạo ở phần trước, nhấp chuột phải vào tên dự án (FirstTestNGProject) trong cửa sổ Project Explorer rồi nhấp vào tùy chọn “Refresh“.

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester


Bước 2:
 Lưu ý rằng một thư mục “test-output” đã được tạo. Mở rộng nó và tìm kiếm tệp index.html. Tệp HTML này là báo cáo kết quả của lần chạy thử nghiệm gần đây nhất.

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Bước 3: Nhấp đúp vào tệp index.html đó để mở tệp trong trình duyệt web được tích hợp sẵn của Eclipse. Bạn có thể làm mới trang này bất kỳ lúc nào sau khi chạy lại bài kiểm tra của mình bằng cách chỉ cần nhấn F5 giống như trong các trình duyệt web thông thường.

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester


4. Cách run test bằng package, class, method trong file testng.xml

Tạo Project demo của chúng ta:

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Trong mỗi Class, ta chỉ cần add 2 Method.

@Test
public void firstTest() {
    System.out.println("First test method");
}

@Test
public void secondTest() {
    System.out.println("Second test method");
}

JavaCopy

I. Cách tạo file testng.xml

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester
[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

Lưu ý:

  • File này tên là gì cũng được, không nhất thiết phải là testng.xml, miễn là nó là file xml. Tuy nhiên, nên tránh lấy trùng tên với file config của thằng khác ví dụ như file pom.xml của Maven.
  • File này nằm ở đâu trong Project cũng được, không nhất thiết phải nằm ở ngay dưới folder Project, nhưng tốt nhất là ko nên để nó trong package code nào, nên tách riêng ra.

Nội dung của file testng.xml:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite" verbose="1">
    <test name="FirstTest">
        <classes>
            <class name="firstpackage.FirstClass" />
        </classes>
    </test>
</suite>

JavaCopy

  • 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>.


II. Cách run test theo Class

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite" verbose="1">
    <test name="FirstTest">
        <classes>
            <class name="firstpackage.FirstClass" />
            <class name="firstpackage.SecondClass" />
        </classes>
    </test>
</suite>​

JavaCopy

  • Đối tượng phía trong của <test> là <classes>
  • Trong <classes> sẽ điền list các class mà ta muốn run test. Name là [packageName].[className]. Ví dụ: firstpackage.FirstClass

Khi run xong, kết quả sẽ hiển thị như sau:

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester


III. Cách run test theo package

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite" verbose="1">
    <test name="FirstTest">
        <packages>
            <package name="firstpackage" />
            <package name="secondpackage" />
        </packages>
    </test>
</suite>​

JavaCopy

  • Đối tượng phía trong của <test> là <packages>
  • Trong <packages> sẽ điền list các package mà ta muốn run test. Name là [packageName] Ví dụ: firstpackage

Khi run xong, kết quả sẽ hiển thị như sau:

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester


IV. Cách run test theo Method

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite" verbose="1">
    <test name="FirstTest">
        <classes>
            <class name="firstpackage.FirstClass">
                <methods>
                    <include name="firstTest" />
                </methods>
            </class>
            <class name="secondpackage.FirstClass">
                <methods>
                    <include name="firstTest" />
                </methods>
            </class>
        </classes>
    </test>
</suite>​

JavaCopy

  • Để run được riêng <method> thì phải có <class>
  • Method muốn được run thì phải sử dụng <include>


V. Cách run test hỗn hợp package, class và method

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Combine Suite" verbose="1">
    <test name="Combine Test">
        <packages>
            <package name="firstpackage" />
        </packages>
        <classes>
            <class name="secondpackage.FirstClass" />
            <class name="thirdpackage.FirstClass">
                <methods>
                    <include name="firstTest" />
                </methods>
            </class>
        </classes>
    </test>
</suite>​

JavaCopy

  • <packages> và <classes> được khai báo cùng cấp, ngang hàng với nhau. <class> không phải khai báo dưới <packge>. Tuy nhiên khai báo <method> thì phải nằm dưới <class>

Đây là kết quả:

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester


Bạn sẽ thấy là TestNG không run theo thứ tự test mà bạn đã config trong TestNG từ firstpackage –> secondpackage –> thirdpackage. Lý do là vì với TestNG thì những thằng nằm dưới <test> là ngang hàng, lúc đó nó chỉ quan tâm đến tên của Class và thứ tự theo bảng chữ cái (Aphabetically). Và các methods trong 1 Class cũng được run theo thứ tự bảng chữ cái. Đó là lý do vì sao nhiều bạn khi mới học cảm thấy khó chịu vì nó không run theo thứ tự từ trên xuống dưới. =))) Để config run theo thứ tự ta mong muốn sẽ được nói ở 1 bài khác, cách bài này không xa lắm.


VI. Cách sử dụng chức năng Include và Exclude

Include: được dùng trong các trường hợp sau đây:

  • Trong 1 package có nhiều package, nhưng chỉ muốn run số ít package trong đó.
  • Trong 1 Class có nhiều method, chỉ muốn run số ít method (xem lại mục IV ở trên).

Exclude: được dùng trong các trường hợp sau đây:

  • Trong 1 package có nhiều package, nhưng muốn không run một vài package trong đó.
  • Trong 1 Class có nhiều method, nhưng muốn không run một vài method.


Ví dụ:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Exclude Method Suite" verbose="1">
    <test name="Exclude Method Test">
        <classes>
            <class name="firstpackage.FirstClass">
                <methods>
                    <exclude name="firstTest" />
                </methods>
            </class>
        </classes>
    </test>
</suite>​

JavaCopy

Đây là kết quả:

[Selenium Java] Lesson 9: Cài đặt và sử dụng TestNG | Anh Tester

NOTE: Một project có thể có nhiều file config.

https://anhtester.com/blog/selenium-java/selenium-java-bai-9-cai-dat-va-su-dung-testng-framework