TestNG - Hướng dẫn nhanh

Kiểm tra là quá trình kiểm tra chức năng của một ứng dụng để đảm bảo nó hoạt động theo yêu cầu. Kiểm thử đơn vị đi vào hình ảnh ở cấp nhà phát triển, nơi các biện pháp thích hợp được thực hiện để kiểm tra mọi thực thể (lớp hoặc phương pháp) để đảm bảo sản phẩm cuối cùng đáp ứng các yêu cầu.

JUnit đã thúc đẩy các nhà phát triển hiểu được tính hữu ích của các bài kiểm tra, đặc biệt là các bài kiểm tra đơn vị, khi so sánh với bất kỳ khung kiểm tra nào khác. Tận dụng một kiến ​​trúc khá đơn giản, thực dụng và chặt chẽ, JUnit đã có thể "lây nhiễm" cho rất nhiều nhà phát triển. Hãy xem hướng dẫn của chúng tôi về JUnit để hiểu rõ về các tính năng của nó. JUnit, đồng thời, cũng có một số thiếu sót, được liệt kê dưới đây:

  • Ban đầu được thiết kế để chỉ cho phép thử nghiệm đơn vị, bây giờ được sử dụng cho tất cả các loại thử nghiệm.

  • Không thể thực hiện kiểm tra phụ thuộc.

  • Kiểm soát cấu hình kém (setUp / ráchDown).

  • Xâm nhập (buộc bạn phải mở rộng các lớp và đặt tên cho các phương thức của bạn theo một cách nhất định).

  • Mô hình lập trình tĩnh (buộc bạn phải biên dịch lại một cách không cần thiết).

  • Việc quản lý các bộ thử nghiệm khác nhau trong các dự án phức tạp có thể rất phức tạp.

TestNG là gì?

Định nghĩa về TestNG theo tài liệu của nó như sau:

TestNG là một khung thử nghiệm lấy cảm hứng từ JUnit và NUnit, nhưng giới thiệu một số chức năng mới giúp nó mạnh mẽ hơn và dễ sử dụng hơn.

TestNG là một khung kiểm thử tự động mã nguồn mở; Ở đâuNG có nghĩa Nmáy lẻGthụt tháo. TestNG tương tự như JUnit (đặc biệt là JUnit 4), nhưng nó không phải là một phần mở rộng của JUnit. Nó được lấy cảm hứng từ JUnit. Nó được thiết kế để tốt hơn JUnit, đặc biệt là khi thử nghiệm các lớp tích hợp. Người tạo ra TestNG là Cedric Beust .

Loại bỏ hầu hết các hạn chế của khuôn khổ cũ, TestNG cung cấp cho nhà phát triển khả năng viết các bài kiểm tra linh hoạt và mạnh mẽ hơn. Vì nó vay mượn nhiều từ Java Annotations (được giới thiệu với JDK 5.0) để xác định các bài kiểm tra, nó cũng có thể chỉ cho bạn cách sử dụng tính năng mới này của ngôn ngữ Java trong môi trường sản xuất thực tế.

Tính năng TestNG

  • Hỗ trợ chú thích.

  • TestNG sử dụng nhiều tính năng Java và OO hơn.

  • Hỗ trợ thử nghiệm các lớp tích hợp (ví dụ: theo mặc định, không cần tạo một phiên bản lớp thử nghiệm mới cho mọi phương pháp thử nghiệm).

  • Tách mã kiểm tra thời gian biên dịch khỏi thông tin dữ liệu / cấu hình thời gian chạy.

  • Cấu hình thời gian chạy linh hoạt.

  • Giới thiệu 'nhóm thử nghiệm'. Khi bạn đã tổng hợp các bài kiểm tra của mình, bạn chỉ có thể yêu cầu TestNG chạy tất cả các bài kiểm tra "front-end" hoặc các bài kiểm tra "nhanh", "chậm", "cơ sở dữ liệu", v.v.

  • Hỗ trợ các phương pháp thử nghiệm phụ thuộc, thử nghiệm song song, thử nghiệm tải và lỗi một phần.

  • API trình cắm linh hoạt.

  • Hỗ trợ kiểm tra đa luồng.

TestNG là một khuôn khổ cho Java, vì vậy yêu cầu đầu tiên là phải cài đặt JDK trong máy của bạn.

Yêu cầu hệ thống

JDK 1,5 trở lên.
Ký ức Không có yêu cầu tối thiểu.
Dung lượng đĩa Không có yêu cầu tối thiểu.
Hệ điều hành Không có yêu cầu tối thiểu.

Bước 1 - Xác minh cài đặt Java trong máy của bạn

Mở bảng điều khiển và thực hiện lệnh java dựa trên hệ điều hành bạn đã cài đặt trên hệ thống của mình.

Hệ điều hành Bài tập Chỉ huy
các cửa sổ Mở bảng điều khiển lệnh c: \> java -version
Linux Mở Command Terminal $ java -version
Mac Mở thiết bị đầu cuối máy: ~ joseph $ java -version

Hãy xác minh kết quả đầu ra cho tất cả các hệ điều hành -

Hệ điều hành Đầu ra
các cửa sổ

phiên bản java "1.7.0_25"

Môi trường thời gian chạy Java (TM) SE (bản dựng 1.7.0_25-b15)

Máy chủ ảo Java HotSpot (TM) 64-Bit (bản dựng 23.25-b01, chế độ hỗn hợp)

Linux

phiên bản java "1.7.0_25"

Môi trường thời gian chạy Java (TM) SE (bản dựng 1.7.0_25-b15)

Máy chủ ảo Java HotSpot (TM) 64-Bit (bản dựng 23.25-b01, chế độ hỗn hợp)

Mac

phiên bản java "1.7.0_25"

Môi trường thời gian chạy Java (TM) SE (bản dựng 1.7.0_25-b15)

Máy chủ ảo Java HotSpot (TM) 64-Bit (bản dựng 23.25-b01, chế độ hỗn hợp)

Nếu bạn không có Java, hãy cài đặt Bộ phát triển phần mềm Java (SDK) từ https://www.oracle.com/technetwork/java/javase/downloads/index.html. Chúng tôi giả định Java 1.7.0_25 là phiên bản đã cài đặt cho hướng dẫn này.

Bước 2: Đặt Môi trường JAVA

Đặt JAVA_HOMEbiến môi trường để trỏ đến vị trí thư mục cơ sở, nơi Java được cài đặt trên máy của bạn. Ví dụ,

Hệ điều hành Đầu ra
các cửa sổ Đặt biến môi trường JAVA_HOME thành C: \ Program Files \ Java \ jdk1.7.0_25.
Linux Xuất JAVA_HOME = / usr / local / java-current.
Mac Xuất JAVA_HOME = / Library / Java / Home.

Nối vị trí trình biên dịch Java vào Đường dẫn hệ thống.

Hệ điều hành Đầu ra
các cửa sổ Nối chuỗi C: \ Program Files \ Java \ jdk1.7.0_25 \ bin vào cuối biến hệ thống, Đường dẫn.
Linux Xuất PATH =$PATH:$JAVA_HOME / bin /
Mac Không yêu cầu

Xác minh cài đặt Java bằng lệnh java -version Như đã giải thích ở trên.

Bước 3: Tải xuống TestNG Archive

Tải xuống phiên bản mới nhất của tệp jar TestNG từ http://www.testng.org. Tại thời điểm viết hướng dẫn này, chúng tôi đã tải xuống testng-6.8.jar và sao chép nó vào thư mục C: \> TestNG.

Hệ điều hành Tên lưu trữ
các cửa sổ testng-6.8.jar
Linux testng-6.8.jar
Mac testng-6.8.jar

Bước 4: Đặt Môi trường TestNG

Đặt TESTNG_HOMEbiến môi trường để trỏ đến vị trí thư mục cơ sở, nơi lưu trữ hũ TestNG trên máy của bạn. Bảng sau đây cho thấy cách đặt biến môi trường trong Windows, Linux và Mac, giả sử rằng chúng tôi đã lưu trữ testng-6.8.jar tại vị trí C: \> TestNG.

Hệ điều hành Sự miêu tả
các cửa sổ Đặt biến môi trường TESTNG_HOME thành C: \ TESTNG.
Linux Xuất TESTNG_HOME = / usr / local / TESTNG
Mac Xuất TESTNG_HOME = / Library / TESTNG

Bước 5: Đặt biến CLASSPATH

Đặt CLASSPATH biến môi trường để trỏ đến vị trí bình TestNG.

Hệ điều hành Sự miêu tả
các cửa sổ Đặt biến môi trường CLASSPATH thành% CLASSPATH%;% TESTNG_HOME% \ testng-6.8.jar.
Linux Xuất CLASSPATH =$CLASSPATH:$TESTNG_HOME / testng-6.8.jar.
Mac Xuất CLASSPATH =$CLASSPATH:$TESTNG_HOME / testng-6.8.jar.

Bước 6: Kiểm tra thiết lập TestNG

Tạo tệp lớp java có tên TestNGSimpleTest tại C:\>TestNG_WORKSPACE.

import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;

public class TestNGSimpleTest {
   @Test
   public void testAdd() {
      String str = "TestNG is working fine";
      AssertEquals("TestNG is working fine", str);
   }
}

TestNG có thể được gọi theo nhiều cách khác nhau -

  • Với tệp testng.xml.
  • Với ANT.
  • Từ dòng lệnh.

Hãy để chúng tôi gọi bằng tệp testng.xml. Tạo tệp xml với tên testng.xml trongC:\>TestNG_WORKSPACE để thực thi (các) trường hợp Kiểm thử.

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
      <classes>
         <class name = "TestNGSimpleTest"/>
      </classes>
   </test>
</suite>

Bước 7: Xác minh kết quả

Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau -

C:\TestNG_WORKSPACE>javac TestNGSimpleTest.java

Bây giờ, hãy gọi testng.xml để xem kết quả -

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Xác minh kết quả đầu ra.

===============================================
Suite1
Total tests run: 1, Failures: 0, Skips: 0
===============================================

Viết một bài kiểm tra trong TestNG về cơ bản bao gồm các bước sau:

  • Viết logic nghiệp vụ của bài kiểm tra của bạn và chèn các chú thích TestNG vào mã của bạn.

  • Thêm thông tin về bài kiểm tra của bạn (ví dụ: tên lớp, các nhóm bạn muốn chạy, v.v.) trong tệp testng.xml hoặc trong build.xml.

  • Chạy TestNG.

Ở đây, chúng ta sẽ thấy một ví dụ hoàn chỉnh về kiểm thử TestNG bằng cách sử dụng lớp POJO, lớp logic nghiệp vụ và một xml thử nghiệm, sẽ được chạy bởi TestNG.

Tạo nên EmployeeDetails.java trong C:\>TestNG_WORKSPACE, là một lớp POJO.

public class EmployeeDetails {

   private String name;
   private double monthlySalary;
   private int age;
   
   // @return the name

   public String getName() {
      return name;
   }
   
   // @param name the name to set
   
   public void setName(String name) {
      this.name = name;
   }
   
   // @return the monthlySalary

   public double getMonthlySalary() {
      return monthlySalary;
   }
   
   // @param monthlySalary the monthlySalary to set
   
   public void setMonthlySalary(double monthlySalary) {
      this.monthlySalary = monthlySalary;
   }
   
   // @return the age
 
   public int getAge() {
      return age;
   }
   
   // @param age the age to set
 
   public void setAge(int age) {
      this.age = age;
   }
}

EmployeeDetails lớp đã quen với -

  • lấy / đặt giá trị của tên nhân viên.
  • lấy / đặt giá trị tiền lương hàng tháng của nhân viên.
  • lấy / đặt giá trị tuổi của nhân viên.

Tạo ra một EmpBusinessLogic.java trong C:\>TestNG_WORKSPACE, chứa logic nghiệp vụ.

public class EmpBusinessLogic {

   // Calculate the yearly salary of employee
   public double calculateYearlySalary(EmployeeDetails employeeDetails) {
      double yearlySalary = 0;
      yearlySalary = employeeDetails.getMonthlySalary() * 12;
      return yearlySalary;
   }
	
   // Calculate the appraisal amount of employee
   public double calculateAppraisal(EmployeeDetails employeeDetails) {
   
      double appraisal = 0;
      
      if(employeeDetails.getMonthlySalary() < 10000) {
         appraisal = 500;
         
      } else {
         appraisal = 1000;
      }
      
      return appraisal;
   }
}

EmpBusinessLogic lớp được sử dụng để tính toán -

  • lương hàng năm của nhân viên.
  • lượng thẩm định của nhân viên.

Bây giờ, hãy tạo một lớp TestNG có tên TestEmployeeDetails.javatrong C: \> TestNG_WORKSPACE. Lớp TestNG là một lớp Java có chứa ít nhất một chú thích TestNG. Lớp này chứa các trường hợp thử nghiệm cần được kiểm tra. Một bài kiểm tra TestNG có thể được định cấu hình bằng chú thích @BeforeXXX và @AfterXXX (chúng ta sẽ thấy điều này trong chương TestNG - Thủ tục thực thi ), cho phép thực hiện một số logic Java trước và sau một điểm nhất định.

import org.testng.Assert;
import org.testng.annotations.Test;

public class TestEmployeeDetails {
   EmpBusinessLogic empBusinessLogic = new EmpBusinessLogic();
   EmployeeDetails employee = new EmployeeDetails();

   @Test
   public void testCalculateAppriasal() {
   
      employee.setName("Rajeev");
      employee.setAge(25);
      employee.setMonthlySalary(8000);
      
      double appraisal = empBusinessLogic.calculateAppraisal(employee);
      Assert.assertEquals(500, appraisal, 0.0, "500");
   }

   // Test to check yearly salary
   @Test
   public void testCalculateYearlySalary() {
   
      employee.setName("Rajeev");
      employee.setAge(25);
      employee.setMonthlySalary(8000);
      
      double salary = empBusinessLogic.calculateYearlySalary(employee);
      Assert.assertEquals(96000, salary, 0.0, "8000");
   }
}

TestEmployeeDetails lớp được sử dụng để kiểm tra các phương pháp của EmpBusinessLogiclớp học. Nó làm như sau -

  • Kiểm tra mức lương hàng năm của nhân viên.

  • Kiểm tra số lượng thẩm định của nhân viên.

Trước khi có thể chạy các bài kiểm tra, bạn phải định cấu hình TestNG bằng một tệp XML đặc biệt, có tên thông thường là testng.xml. Cú pháp của tệp này rất đơn giản và nội dung của nó như được hiển thị bên dưới. Tạo tệp này trongC:\>TestNG_WORKSPACE.

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
      <classes>
         <class name = "TestEmployeeDetails"/>
      </classes>
   </test>
</suite>

Chi tiết về tập tin trên như sau:

  • Một bộ được thể hiện bằng một tệp XML. Nó có thể chứa một hoặc nhiều bài kiểm tra và được xác định bởi thẻ <suite>.

  • Thẻ <test> đại diện cho một bài kiểm tra và có thể chứa một hoặc nhiều lớp TestNG.

  • Thẻ <class> đại diện cho một lớp TestNG. Nó là một lớp Java có chứa ít nhất một chú thích TestNG. Nó có thể chứa một hoặc nhiều phương pháp thử nghiệm.

Biên dịch các lớp Test case bằng javac.

C:\TestNG_WORKSPACE>javac EmployeeDetails.java EmpBusinessLogic.java TestEmployeeDetails.java

Bây giờ hãy TestNG bằng lệnh sau:

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Nếu tất cả đã được thực hiện chính xác, bạn sẽ thấy kết quả kiểm tra của mình trong bảng điều khiển. Hơn nữa, TestNG tạo một báo cáo HTML rất đẹp trong một thư mục có têntest-outputđược tạo tự động trong thư mục hiện tại. Nếu bạn mở nó và tải index.html, bạn sẽ thấy một trang tương tự như trang trong hình bên dưới -

Cách truyền thống để chỉ ra các phương pháp thử nghiệm trong JUnit 3 là bằng cách thêm tiền tố vào tên của chúng với thử nghiệm. Đây là một phương pháp rất hiệu quả để gắn thẻ các phương thức nhất định trong một lớp là có ý nghĩa đặc biệt, nhưng việc đặt tên không được mở rộng cho lắm (nếu chúng ta muốn thêm nhiều thẻ hơn cho các khung khác nhau thì sao?) Và khá linh hoạt (nếu chúng ta muốn chuyển các tham số bổ sung vào khung thử nghiệm?).

Chú thích đã được chính thức thêm vào ngôn ngữ Java trong JDK 5 và TestNG đã lựa chọn sử dụng chú thích để chú thích các lớp thử nghiệm.

Đây là danh sách các chú thích mà TestNG hỗ trợ -

Sr.No. Chú thích & Mô tả
1

@BeforeSuite

Phương thức chú thích sẽ chỉ được chạy một lần trước khi tất cả các thử nghiệm trong bộ phần mềm này chạy.

2

@AfterSuite

Phương thức chú thích sẽ chỉ được chạy một lần sau khi tất cả các thử nghiệm trong bộ phần mềm này đã chạy.

3

@BeforeClass

Phương thức chú thích sẽ chỉ được chạy một lần trước khi phương thức thử nghiệm đầu tiên trong lớp hiện tại được gọi.

4

@AfterClass

Phương thức được chú thích sẽ chỉ được chạy một lần sau khi tất cả các phương thức kiểm tra trong lớp hiện tại đã chạy.

5

@BeforeTest

Phương thức chú thích sẽ được chạy trước khi chạy bất kỳ phương thức kiểm tra nào thuộc các lớp bên trong thẻ <test>.

6

@AfterTest

Phương thức chú thích sẽ được chạy sau khi tất cả các phương thức kiểm tra thuộc các lớp bên trong thẻ <test> đã chạy.

7

@BeforeGroups

Danh sách các nhóm mà phương pháp cấu hình này sẽ chạy trước đó. Phương pháp này được đảm bảo sẽ chạy ngay trước khi phương pháp thử nghiệm đầu tiên thuộc bất kỳ nhóm nào trong số này được gọi.

số 8

@AfterGroups

Danh sách các nhóm mà phương pháp cấu hình này sẽ chạy sau. Phương pháp này được đảm bảo sẽ chạy ngay sau khi phương pháp thử nghiệm cuối cùng thuộc bất kỳ nhóm nào trong số này được gọi.

9

@BeforeMethod

Phương thức được chú thích sẽ được chạy trước mỗi phương pháp thử nghiệm.

10

@AfterMethod

Phương thức được chú thích sẽ được chạy sau mỗi phương pháp thử nghiệm.

11

@DataProvider

Đánh dấu một phương pháp là cung cấp dữ liệu cho một phương pháp thử nghiệm. Phương thức chú thích phải trả về một Đối tượng [] [], trong đó mỗi Đối tượng [] có thể được gán danh sách tham số của phương thức thử nghiệm. Phương thức @Test muốn nhận dữ liệu từ DataProvider này cần sử dụng tên dataProvider bằng với tên của chú thích này.

12

@Factory

Đánh dấu một phương thức là một nhà máy sản xuất trả về các đối tượng sẽ được TestNG sử dụng làm lớp Kiểm tra. Phương thức phải trả về Object [].

13

@Listeners

Xác định người nghe trên một lớp thử nghiệm.

14

@Parameters

Mô tả cách truyền tham số cho phương thức @Test.

15

@Test

Đánh dấu một lớp hoặc một phương thức là một phần của bài kiểm tra.

Lợi ích của việc sử dụng chú thích

Sau đây là một số lợi ích của việc sử dụng chú thích -

  • TestNG xác định các phương pháp mà nó quan tâm, bằng cách tra cứu các chú thích. Do đó, tên phương thức không bị giới hạn ở bất kỳ mẫu hoặc định dạng nào.

  • Chúng tôi có thể chuyển các tham số bổ sung cho các chú thích.

  • Chú thích được đánh mạnh, vì vậy trình biên dịch sẽ gắn cờ bất kỳ lỗi nào ngay lập tức.

  • Các lớp thử nghiệm không còn cần phải mở rộng bất kỳ thứ gì (chẳng hạn như TestCase, cho JUnit 3).

Chương này giải thích quy trình thực thi của các phương thức trong TestNG. Nó giải thích thứ tự của các phương thức được gọi. Dưới đây là quy trình thực thi của các phương pháp API thử nghiệm TestNG với một ví dụ.

Tạo tên tệp lớp java TestngAnnotation.java trong C:\>TestNG_WORKSPACE để kiểm tra các chú thích.

import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.AfterSuite;

public class TestngAnnotation {
   // test case 1
   @Test
   public void testCase1() {
      System.out.println("in test case 1");
   }

   // test case 2
   @Test
   public void testCase2() {
      System.out.println("in test case 2");
   }

   @BeforeMethod
   public void beforeMethod() {
      System.out.println("in beforeMethod");
   }

   @AfterMethod
   public void afterMethod() {
      System.out.println("in afterMethod");
   }

   @BeforeClass
   public void beforeClass() {
      System.out.println("in beforeClass");
   }

   @AfterClass
   public void afterClass() {
      System.out.println("in afterClass");
   }

   @BeforeTest
   public void beforeTest() {
      System.out.println("in beforeTest");
   }

   @AfterTest
   public void afterTest() {
      System.out.println("in afterTest");
   }

   @BeforeSuite
   public void beforeSuite() {
      System.out.println("in beforeSuite");
   }

   @AfterSuite
   public void afterSuite() {
      System.out.println("in afterSuite");
   }

}

Tiếp theo, hãy tạo tệp testng.xml trong C:\>TestNG_WORKSPACE để thực thi các chú thích.

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
      <classes>
         <class name = "TestngAnnotation"/>
      </classes>
   </test>
</suite>

Biên dịch lớp Test case bằng javac.

C:\TestNG_WORKSPACE>javac TestngAnnotation.java

Bây giờ, hãy chạy testng.xml, sẽ chạy trường hợp thử nghiệm được xác định trong lớp Trường hợp thử nghiệm được cung cấp.

C:\TestNG_WORKSPACE>java org.testng.TestNG testng.xml

Xác minh kết quả đầu ra.

in beforeSuite
in beforeTest
in beforeClass
in beforeMethod
in test case 1
in afterMethod
in beforeMethod
in test case 2
in afterMethod
in afterClass
in afterTest
in afterSuite

===============================================
Suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================

Dựa trên kết quả trên, quy trình thực hiện như sau:

  • Trước hết, phương thức beforeSuite () chỉ được thực thi một lần.

  • Cuối cùng, phương thức afterSuite () chỉ thực thi một lần.

  • Ngay cả các phương thức beforeTest (), beforeClass (), afterClass () và afterTest () chỉ được thực thi một lần.

  • Phương thức beforeMethod () thực thi cho mỗi trường hợp thử nghiệm nhưng trước khi thực thi trường hợp thử nghiệm.

  • Phương thức afterMethod () thực thi cho mỗi trường hợp thử nghiệm nhưng sau khi thực thi trường hợp thử nghiệm.

  • Ở giữa beforeMethod () và afterMethod (), mỗi trường hợp thử nghiệm sẽ thực thi.

Các trường hợp thử nghiệm được thực thi bằng TestNGlớp học. Lớp này là điểm đầu vào chính để chạy các bài kiểm tra trong khung TestNG. Người dùng có thể tạo đối tượng TestNG của riêng họ và gọi nó theo nhiều cách khác nhau như -

  • Trên testng.xml hiện có.

  • Trên testng.xml tổng hợp, được tạo hoàn toàn từ Java.

  • Bằng cách thiết lập trực tiếp các lớp thử nghiệm.

Bạn cũng có thể xác định nhóm nào sẽ bao gồm hoặc loại trừ, gán tham số, v.v. Các tham số dòng lệnh là:

  • -d outputdir: chỉ định thư mục đầu ra.

  • -testclass class_name: chỉ định một hoặc một số tên lớp.

  • -testjar jar_name: chỉ định jar chứa các bài kiểm tra.

  • -sourcedir src1; src2 :; danh sách thư mục nguồn được phân tách (chỉ được sử dụng khi chú thích javadoc được sử dụng).

  • -target

  • -groups

  • -testrunfactory

  • -listener

Chúng tôi sẽ tạo đối tượng TestNG một testng.xml hiện có trong ví dụ dưới đây.

Tạo một lớp học

Tạo một lớp java để được kiểm tra, giả sử, MessageUtil.java trong C:\>TestNG_WORKSPACE.

/*
* This class prints the given message on console.
*/

public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message) {
      this.message = message;
   }
      
   // prints the message
   public String printMessage() {
      System.out.println(message);
      return message;
   }   
}

Tạo lớp trường hợp thử nghiệm

  • Tạo một lớp kiểm tra java, giả sử, SampleTest.java.

  • Thêm một phương pháp thử testPrintMessage () vào lớp thử nghiệm của bạn.

  • Thêm chú thích @Test vào phương thức testPrintMessage ().

  • Thực hiện điều kiện thử nghiệm và kiểm tra điều kiện bằng API khẳng định của TestNG.

Tạo một tệp lớp java có tên SampleTest.java trong C:\>TestNG_WORKSPACE.

import org.testng.Assert;
import org.testng.annotations.Test;

public class SampleTest {
	
   String message = "Hello World";
   MessageUtil messageUtil = new MessageUtil(message);

   @Test
   public void testPrintMessage() {
      Assert.assertEquals(message, messageUtil.printMessage());
   }
}

Tạo testng.xml

Tiếp theo, hãy tạo tệp testng.xml trong C:\>TestNG_WORKSPACE, để thực thi (các) trường hợp thử nghiệm. Tệp này ghi lại toàn bộ thử nghiệm của bạn bằng XML. Tệp này giúp dễ dàng mô tả tất cả các bộ thử nghiệm của bạn và các thông số của chúng trong một tệp, bạn có thể kiểm tra tệp này trong kho lưu trữ mã của mình hoặc e-mail cho đồng nghiệp. Nó cũng giúp bạn dễ dàng trích xuất các tập hợp con của các bài kiểm tra của bạn hoặc chia một số cấu hình thời gian chạy (ví dụ: testngdatabase.xml sẽ chỉ chạy các bài kiểm tra thực hiện cơ sở dữ liệu của bạn).

<?xml version = "1.0" encoding = "UTF-8"?>

<suite name = "Sample test Suite">
   <test name = "Sample test">
      <classes>
         <class name = "SampleTest" />
      </classes>
   </test>
</suite>

Biên dịch test case bằng javac.

C:\TestNG_WORKSPACE>javac MessageUtil.java SampleTest.java

Bây giờ, hãy chạy testng.xml, sẽ chạy trường hợp thử nghiệm được xác định trong thẻ <test>.

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Xác minh kết quả đầu ra.

Hello World

===============================================
Sample test Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

A test suitelà tập hợp các trường hợp kiểm thử nhằm mục đích kiểm tra một hành vi hoặc một tập hợp các hành vi của chương trình phần mềm. Trong TestNG, chúng tôi không thể định nghĩa một bộ trong mã nguồn thử nghiệm, nhưng nó được thể hiện bằng một tệp XML, vì bộ là tính năng thực thi. Nó cũng cho phép chạy cấu hình linh hoạt của các bài kiểm tra . Một bộ có thể chứa một hoặc nhiều bài kiểm tra và được xác định bởi thẻ <suite>.

<suite> là thẻ gốc của testng.xml của bạn. Nó mô tả một bộ thử nghiệm, lần lượt được tạo ra từ một số phần <test>.

Bảng sau liệt kê tất cả các thuộc tính pháp lý mà <suite> chấp nhận.

Sr.No. Thuộc tính & Mô tả
1

name

Tên của bộ này. Nó là mộtmandatory thuộc tính.

2

verbose

Mức độ hoặc độ dài cho lần chạy này.

3

parallel

Liệu TestNG có nên chạy các luồng khác nhau để chạy bộ này hay không.

4

thread-count

Số luồng sẽ sử dụng, nếu chế độ song song được bật (bỏ qua các luồng khác).

5

annotations

Loại chú thích bạn đang sử dụng trong các thử nghiệm của mình.

6

time-out

Thời gian chờ mặc định sẽ được sử dụng trên tất cả các phương pháp thử nghiệm được tìm thấy trong thử nghiệm này.

Trong chương này, chúng tôi sẽ chỉ cho bạn một ví dụ có hai lớp thử nghiệm, Test1 & Test2, chạy cùng nhau bằng Test Suite.

Tạo một lớp học

Tạo một lớp java để được kiểm tra, giả sử, MessageUtil.java trong C:\>JUNIT_WORKSPACE.

/*
* This class prints the given message on console.
*/

public class MessageUtil {
   private String message;

   // Constructor
   // @param message to be printed
   public MessageUtil(String message) {
      this.message = message;
   }

   // prints the message
   public String printMessage() {
      System.out.println(message);
      return message;
   }

   // add "Hi!" to the message
   public String salutationMessage() {
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }
}

Tạo lớp trường hợp thử nghiệm

Tạo tệp lớp java có tên Test1.java trong C:\>TestNG_WORKSPACE.

import org.testng.Assert;
import org.testng.annotations.Test;

public class Test1 {
   String message = "Manisha";
   MessageUtil messageUtil = new MessageUtil(message);

   @Test
   public void testPrintMessage() {
      System.out.println("Inside testPrintMessage()");
      Assert.assertEquals(message, messageUtil.printMessage());
   }
}

Tạo tệp lớp java có tên Test2.java trong C:\>TestNG_WORKSPACE.

import org.testng.Assert;
import org.testng.annotations.Test;

public class Test2 {
   String message = "Manisha";	
   MessageUtil messageUtil = new MessageUtil(message);
	 
   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Manisha";
      Assert.assertEquals(message,messageUtil.salutationMessage());
   }
}

Bây giờ, hãy viết testng.xml trong C:\>TestNG_WORKSPACE, sẽ chứa thẻ <suite> như sau:

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">

   <test name = "exampletest1">
      <classes>
         <class name = "Test1" />
      </classes>
   </test>
  
   <test name = "exampletest2">
      <classes>
         <class name = "Test2" />
      </classes>
   </test>
  
</suite>

Suite1 bao gồm exampletest1exampletest2.

Biên dịch tất cả các lớp java bằng javac.

C:\TestNG_WORKSPACE>javac MessageUtil.java Test1.java Test2.java

Bây giờ, hãy chạy testng.xml, sẽ chạy trường hợp thử nghiệm được xác định trong lớp Trường hợp thử nghiệm được cung cấp.

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Xác minh kết quả đầu ra.

Inside testPrintMessage()
Manisha
Inside testSalutationMessage()
Hi!Manisha

===============================================
Suite1
Total tests run: 2, Failures: 0, Skips: 0
===============================================

Bạn cũng có thể kiểm tra thư mục đầu ra thử nghiệm . Trong thư mục Suite1 , bạn có thể thấy hai tệp html được tạo, exampletest1.html và exampletest2.html, trông như sau:

Đôi khi, nó xảy ra rằng mã của chúng tôi chưa sẵn sàng và trường hợp thử nghiệm được viết để kiểm tra phương pháp / mã đó không thành công. Trong những trường hợp như vậy, chú thích@Test(enabled = false) giúp vô hiệu hóa trường hợp thử nghiệm này.

Nếu một phương pháp thử nghiệm được chú thích bằng @Test (enable = false) , thì trường hợp thử nghiệm chưa sẵn sàng thử nghiệm sẽ bị bỏ qua.

Bây giờ, hãy xem @Test (enable = false) hoạt động.

Tạo một lớp học

Tạo một lớp java để được kiểm tra, giả sử, MessageUtil.java trong C:\>TestNG_WORKSPACE.

/*
* This class prints the given message on console.
*/

public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message) {
      this.message = message; 
   }

   // prints the message
   public String printMessage() {
      System.out.println(message);
      return message;
   }   

   // add "Hi!" to the message
   public String salutationMessage() {
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }   
}

Tạo lớp trường hợp thử nghiệm

  • Tạo một lớp kiểm tra java, giả sử, IgnoreTest.java.

  • Thêm các phương pháp kiểm tra, testPrintMessage () và, testSalutationMessage (), vào lớp kiểm tra của bạn.

  • Thêm Annotation @Test (enable = false) vào phương thức testPrintMessage ().

Tạo tệp lớp java có tên IgnoreTest.java trong C:\>TestNG_WORKSPACE.

import org.testng.Assert;
import org.testng.annotations.Test;

public class IgnoreTest {
   String message = "Manisha";
   MessageUtil messageUtil = new MessageUtil(message);

   @Test(enabled = false)
   public void testPrintMessage() {
      System.out.println("Inside testPrintMessage()");
      message = "Manisha";
      Assert.assertEquals(message, messageUtil.printMessage());
   }

   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Manisha";
      Assert.assertEquals(message, messageUtil.salutationMessage());
   }
}

Tạo testng.xml

Tạo testng.xml trong C:\>TestNG_WORKSPACE để thực thi (các) trường hợp thử nghiệm.

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
      <classes>
         <class name = "IgnoreTest" />
      </classes>
   </test>
</suite>

Biên dịch các lớp MessageUtil và test case bằng javac.

C:\TestNG_WORKSPACE>javac MessageUtil.java IgnoreTest.java

Bây giờ, hãy chạy testng.xml, sẽ không chạy testPrintMessage () trường hợp thử nghiệm được xác định trong lớp Test Case đã cung cấp.

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Xác minh kết quả đầu ra. testPrintMessage () test case không được kiểm tra.

Inside testSalutationMessage()
Hi!Manisha

===============================================
Suite1
Total tests run: 1, Failures: 0, Skips: 0
===============================================

Bạn cũng có thể bỏ qua một nhóm các bài kiểm tra, sẽ được thảo luận trong chương tiếp theo.

Kiểm tra nhóm là một tính năng cải tiến mới trong TestNG, tính năng này không tồn tại trong khuôn khổ JUnit. Nó cho phép bạn gửi các phương pháp thành các phần thích hợp và thực hiện nhóm các phương pháp thử nghiệm phức tạp.

Bạn không chỉ có thể khai báo các phương thức đó thuộc nhóm mà còn có thể chỉ định các nhóm chứa các nhóm khác. Sau đó, TestNG có thể được gọi và yêu cầu bao gồm một nhóm nhóm nhất định (hoặc cụm từ thông dụng), đồng thời loại trừ một nhóm khác.

Kiểm tra nhóm cung cấp tính linh hoạt tối đa trong cách bạn phân vùng các bài kiểm tra của mình và không yêu cầu bạn biên dịch lại bất kỳ thứ gì nếu bạn muốn chạy hai bộ kiểm tra khác nhau liên tục.

Các nhóm được chỉ định trong tệp testng.xml của bạn bằng thẻ <groups>. Nó có thể được tìm thấy dưới thẻ <test> hoặc <suite>. Các nhóm được chỉ định trong thẻ <suite> áp dụng cho tất cả các thẻ <test> bên dưới.

Bây giờ, hãy lấy một ví dụ để xem cách kiểm tra nhóm hoạt động như thế nào.

Tạo một lớp học

Tạo một lớp java để được kiểm tra, giả sử, MessageUtil.java trong C:\> TestNG_WORKSPACE.

/*
* This class prints the given message on console.
*/
public class MessageUtil {
   private String message;

   // Constructor
   // @param message to be printed
   public MessageUtil(String message) {
      this.message = message;
   }

   // prints the message
   public String printMessage() {
      System.out.println(message);
      return message;
   }

   // add "tutorialspoint" to the message
   public String salutationMessage() {
      message = "tutorialspoint" + message;
      System.out.println(message);
      return message;
   }

   // add "www." to the message
   public String exitMessage() {
      message = "www." + message;
      System.out.println(message);
      return message;
   }
}

Tạo lớp trường hợp thử nghiệm

  • Tạo một lớp thử nghiệm java, chẳng hạn như GroupTestExample.java.

  • Thêm các phương pháp kiểm tra, testPrintMessage () và testSalutationMessage (), vào lớp kiểm tra của bạn.

  • Nhóm phương pháp thử nghiệm thành hai loại -

    • Check-in tests (checkintest)- Các bài kiểm tra này nên được chạy trước khi bạn gửi mã mới. Chúng thường phải nhanh và chỉ cần đảm bảo không có chức năng cơ bản nào bị hỏng.

    • Functional tests (functest) - Các bài kiểm tra này phải bao gồm tất cả các chức năng của phần mềm của bạn và được chạy ít nhất một lần một ngày, mặc dù lý tưởng là bạn muốn chạy chúng liên tục.

Tạo tệp lớp java có tên GroupTestExample.java trong C:\>TestNG_WORKSPACE.

import org.testng.Assert;
import org.testng.annotations.Test;

public class GroupTestExample {
   String message = ".com";
   MessageUtil messageUtil = new MessageUtil(message);

   @Test(groups = { "functest", "checkintest" })
   
   public void testPrintMessage() {
      System.out.println("Inside testPrintMessage()");
      message = ".com";
      Assert.assertEquals(message, messageUtil.printMessage());
   }

   @Test(groups = { "checkintest" })
   
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "tutorialspoint" + ".com";
      Assert.assertEquals(message, messageUtil.salutationMessage());
   }

   @Test(groups = { "functest" })
   
   public void testingExitMessage() {
      System.out.println("Inside testExitMessage()");
      message = "www." + "tutorialspoint"+".com";
      Assert.assertEquals(message, messageUtil.exitMessage());
   }  
}

Tạo testng.xml

Tạo testng.xml trong C:\> TestNG_WORKSPACE, để thực thi (các) trường hợp thử nghiệm. Ở đây, chúng tôi sẽ chỉ thực hiện những bài kiểm tra, mà thuộc về nhóm functest .

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
   
      <groups>
         <run>
            <include name = "functest" />
         </run>
      </groups>

      <classes>
         <class name = "GroupTestExample" />
      </classes>
   
   </test>
</suite>

Biên dịch các lớp MessageUtil, Test case bằng javac.

C:\TestNG_WORKSPACE>javac MessageUtil.java GroupTestExample.java

Bây giờ, chạy testng.xml, mà sẽ chỉ chạy các testPrintMessage () phương pháp, vì nó thuộc nhóm functest .

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Xác minh kết quả đầu ra. Chỉ phương thức testPrintMessage () được thực thi.

Inside testPrintMessage()
.com
Inside testExitMessage()
www..com

===============================================
Suite1
Total tests run: 2, Failures: 1, Skips: 0
===============================================

Nhóm các nhóm

Nhóm cũng có thể bao gồm các nhóm khác. Các nhóm này được gọi làMetaGroups. Ví dụ: bạn có thể muốn xác định một nhóm tất cả bao gồm checkintestfunctest . Hãy sửa đổi tệp testng.xml của chúng tôi như sau:

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
   <test name = "test1">
   
      <groups>
      
         <define name = "all">
            <include name = "functest"/>
            <include name = "checkintest"/>
         </define>
         
         <run>
            <include name = "all"/>
         </run>
         
      </groups>
      
      <classes>
         <class name = "GroupTestExample" />
      </classes>
      
   </test>
</suite>

Thực thi testng.xml ở trên sẽ thực hiện cả ba bài kiểm tra và sẽ cho bạn kết quả sau:

Inside testPrintMessage()
.com
Inside testSalutationMessage()
tutorialspoint.com
Inside testExitMessage()
www.tutorialspoint.com

===============================================
Suite1
Total tests run: 3, Failures: 0, Skips: 0
===============================================

Nhóm loại trừ

Bạn có thể bỏ qua một nhóm bằng cách sử dụng thẻ <exclude> như hình dưới đây -

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
   <test name = "test1">

      <groups>
         <define name = "all">
            <exclude name = "functest"/>
            <include name = "checkintest"/>
         </define>

         <run>
            <include name = "all"/>
         </run>
      </groups>

      <classes>
         <class name = "GroupTestExample" />
      </classes>

   </test>
</suite>

TestNG cung cấp một tùy chọn theo dõi xử lý ngoại lệ của mã. Bạn có thể kiểm tra xem mã có ném một ngoại lệ mong muốn hay không. ĐâyexpectedExceptionstham số được sử dụng cùng với chú thích @Test. Bây giờ hãy nhìn@Test(expectedExceptions) đang hoạt động.

Tạo một lớp học

Tạo một lớp java để được kiểm tra, giả sử, MessageUtil.java trong C:\> TestNG_WORKSPACE. Thêm điều kiện lỗi bên trong phương thức printMessage ().

/*
* This class prints the given message on console.
*/
public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message) {
      this.message = message; 
   }

   // prints the message
   public void printMessage() {
      System.out.println(message);
      int a =0;
      int b = 1/a;
   }   

   // add "Hi!" to the message
   public String salutationMessage() {
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }   
}

Tạo lớp trường hợp thử nghiệm

  • Tạo một lớp kiểm tra java, giả sử, ExpectedExceptionTest.java.

  • Thêm một ngoại lệ dự kiến ​​ArithmeticException vào trường hợp thử nghiệm testPrintMessage ().

Tạo tệp lớp java có tên ExpectedExceptionTest.java trong C:\> TestNG_WORKSPACE.

import org.testng.Assert;
import org.testng.annotations.Test;

public class ExpectedExceptionTest {
   String message = "Manisha";	
   MessageUtil messageUtil = new MessageUtil(message);
	   
   @Test(expectedExceptions = ArithmeticException.class)
   public void testPrintMessage() {	
      System.out.println("Inside testPrintMessage()");     
      messageUtil.printMessage();     
   }
   
   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Manisha";
      Assert.assertEquals(message,messageUtil.salutationMessage());
   }
}

Tạo người chạy thử nghiệm

Tạo testng.xml trong C:\>TestNG_WORKSPACE để thực thi (các) trường hợp thử nghiệm.

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
      <classes>
         <class name = "ExpectedExceptionTest" />
      </classes>
   </test>
</suite>

Biên dịch các lớp MessageUtil, Test case bằng javac.

C:\TestNG_WORKSPACE>javac MessageUtil.java TestJunit.java

Bây giờ, chạy Test Runner, sẽ chạy các trường hợp thử nghiệm được xác định trong lớp Test Case đã cung cấp.

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Xác minh kết quả đầu ra. testPrintMessage () test case sẽ được thông qua.

Inside testPrintMessage()
Manisha
Inside testSalutationMessage()
Hi!Manisha

===============================================
Suite1
Total tests run: 2, Failures: 0, Skips: 0
===============================================

Đôi khi, bạn có thể cần gọi các phương thức trong một trường hợp thử nghiệm theo một thứ tự cụ thể hoặc bạn có thể muốn chia sẻ một số dữ liệu và trạng thái giữa các phương thức. Loại phụ thuộc này được hỗ trợ bởi TestNG, vì nó hỗ trợ việc khai báo các phụ thuộc rõ ràng giữa các phương pháp thử nghiệm.

TestNG cho phép bạn chỉ định các phần phụ thuộc với -

  • Sử dụng thuộc tính dependOnMethods trong các chú thích @Test, HOẶC.

  • Sử dụng thuộc tính dependOnGroups trong các chú thích @Test.

Ví dụ sử dụng dependOnMethods

Tạo một lớp học

Tạo một lớp java để được kiểm tra, giả sử, MessageUtil.java trong C:\>TestNG_WORKSPACE.

public class MessageUtil {
   private String message;

   // Constructor
   // @param message to be printed
   public MessageUtil(String message) {
      this.message = message;
   }

   // prints the message
   public String printMessage() {
      System.out.println(message);
      return message;
   }

   // add "Hi!" to the message
   public String salutationMessage() {
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }
}

Tạo lớp trường hợp thử nghiệm

  • Tạo một lớp thử nghiệm java, chẳng hạn như DependencyTestUsingAnnotation.java.

  • Thêm các phương pháp thử nghiệm, testPrintMessage () và testSalutationMessage () và initEnosystemTest (), vào lớp thử nghiệm của bạn.

  • Thêm thuộc tính dependsOnMethods = {"initEnvironmentTest"} vào chú thích @Test của testSalutationMessage() phương pháp.

Tạo tên tệp lớp java DependencyTestUsingAnnotation.java trong C:\>TestNG_WORKSPACE.

import org.testng.Assert;
import org.testng.annotations.Test;

public class DependencyTestUsingAnnotation {
String message = "Manisha";
MessageUtil messageUtil = new MessageUtil(message);

   @Test
   public void testPrintMessage() {
      System.out.println("Inside testPrintMessage()");
      message = "Manisha";
      Assert.assertEquals(message, messageUtil.printMessage());
   }

   @Test(dependsOnMethods = { "initEnvironmentTest" })
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Manisha";
      Assert.assertEquals(message, messageUtil.salutationMessage());
   }

   @Test
   public void initEnvironmentTest() {
      System.out.println("This is initEnvironmentTest");
   }
}

Tạo testng.xml

Tạo testng.xml trong C:\>TestNG_WORKSPACE để thực thi (các) trường hợp thử nghiệm.

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
      <classes>
         <class name = "DependencyTestUsingAnnotation" />
      </classes>
   </test>
</suite>

Biên dịch các lớp MessageUtil, Test case bằng javac.

C:\TestNG_WORKSPACE>javac MessageUtil.java DependencyTestUsingAnnotation.java

Bây giờ, hãy chạy testng.xml, phương thức này sẽ chỉ chạy phương thức testSalutationMessage () sau khi thực thi phương thức initEnosystemTest ().

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Xác minh kết quả đầu ra.

This is initEnvironmentTest
Inside testPrintMessage()
Manisha
Inside testSalutationMessage()
Hi!Manisha

===============================================
Suite1
Total tests run: 3, Failures: 0, Skips: 0
===============================================

Ví dụ sử dụng dependOnGroups

Bạn cũng có thể có các phương pháp phụ thuộc vào toàn bộ nhóm. Hãy lấy một ví dụ để chứng minh điều này.

Tạo một lớp học

Tạo một lớp java để được kiểm tra, giả sử, MessageUtil.java trong C:\>TestNG_WORKSPACE.

public class MessageUtil {
   private String message;

   // Constructor
   // @param message to be printed
   public MessageUtil(String message) {
      this.message = message;
   }

   // prints the message
   public String printMessage() {
      System.out.println(message);
      return message;
   }

   // add "Hi!" to the message
   public String salutationMessage() {
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }
}

Tạo lớp trường hợp thử nghiệm

  • Tạo một lớp thử nghiệm java, chẳng hạn như DependencyTestUsingAnnotation.java.

  • Thêm các phương pháp thử nghiệm, testPrintMessage () testSalutationMessage () và initEnosystemTest () vào lớp thử nghiệm của bạn và thêm chúng vào nhóm "init".

  • Thêm thuộc tính dependsOnMethods = {"init.*"} vào chú thích @Test của testSalutationMessage() phương pháp.

Tạo tệp lớp java có tên DependencyTestUsingAnnotation.java trong C:\>TestNG_WORKSPACE.

import org.testng.Assert;
import org.testng.annotations.Test;

public class DependencyTestUsingAnnotation {
   String message = "Manisha";
   MessageUtil messageUtil = new MessageUtil(message);

   @Test(groups = { "init" })
   public void testPrintMessage() {
      System.out.println("Inside testPrintMessage()");
      message = "Manisha";
      Assert.assertEquals(message, messageUtil.printMessage());
   }

   @Test(dependsOnGroups = { "init.*" })
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Manisha";
      Assert.assertEquals(message, messageUtil.salutationMessage());
   }

   @Test(groups = { "init" })
   public void initEnvironmentTest() {
      System.out.println("This is initEnvironmentTest");
   }
}

Trong ví dụ này, testSalutationMessage () được khai báo tùy thuộc vào bất kỳ nhóm nào, khớp với biểu thức chính quy "init. *", Điều này đảm bảo rằng các phương thức testPrintMessage () và initEnosystemTest () sẽ luôn được gọi trước testSalutationMessage ().

Nếu một phương thức phụ thuộc vào không thành công và bạn có phụ thuộc cứng vào nó (alwaysRun = false, là mặc định), các phương thức phụ thuộc vào nó không được đánh dấu là FAIL mà là SKIP. Các phương thức bị bỏ qua sẽ được báo cáo như vậy trong báo cáo cuối cùng (bằng màu không phải là Đỏ và Xanh trong HTML), điều này rất quan trọng vì các phương pháp bị bỏ qua không nhất thiết là lỗi.

Tạo testng.xml

Tạo testng.xml trong C:\>TestNG_WORKSPACE để thực thi (các) trường hợp thử nghiệm.

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
      <classes>
         <class name = "DependencyTestUsingAnnotation" />
      </classes>
   </test>
</suite>

Biên dịch các lớp MessageUtil, Test case bằng javac.

C:\TestNG_WORKSPACE>javac MessageUtil.java DependencyTestUsingAnnotation.java

Bây giờ, hãy chạy testng.xml, phương thức này sẽ chỉ chạy phương thức testSalutationMessage () sau khi thực thi phương thức initEnosystemTest () .

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Xác minh kết quả đầu ra.

This is initEnvironmentTest
Inside testPrintMessage()
Manisha
Inside testSalutationMessage()
Hi!Manisha

===============================================
Suite1
Total tests run: 3, Failures: 0, Skips: 0
===============================================

phụ thuộcOnGroups Vs phụ thuộcOnMethods

  • Khi sử dụng nhóm, chúng tôi không còn gặp phải các vấn đề về cấu trúc lại. Miễn là chúng tôi không sửa đổi thuộc tính nhóm hoặc nhóm phụ thuộc, các bài kiểm tra của chúng tôi sẽ tiếp tục chạy với các phần phụ thuộc thích hợp được thiết lập.

  • Bất cứ khi nào một phương thức mới cần được thêm vào biểu đồ phụ thuộc, tất cả những gì chúng ta cần làm là đặt nó vào đúng nhóm và đảm bảo rằng nó phụ thuộc vào đúng nhóm. Chúng tôi không cần phải sửa đổi bất kỳ phương pháp nào khác.

Một tính năng thú vị khác có trong TestNG là parametric testing. Trong hầu hết các trường hợp, bạn sẽ gặp một tình huống trong đó logic nghiệp vụ yêu cầu số lượng thử nghiệm rất khác nhau.Parameterized tests cho phép các nhà phát triển chạy đi chạy lại cùng một thử nghiệm bằng cách sử dụng các giá trị khác nhau.

TestNG cho phép bạn chuyển các tham số trực tiếp đến các phương pháp thử nghiệm của mình theo hai cách khác nhau -

  • Với testng.xml
  • Với nhà cung cấp dữ liệu

Truyền tham số với testng.xml

Với kỹ thuật này, bạn xác định các tham số đơn giản trong tệp testng.xml và sau đó tham chiếu các tham số đó trong tệp nguồn. Hãy để chúng tôi có một ví dụ để chứng minh cách sử dụng kỹ thuật này để truyền các tham số.

Tạo lớp trường hợp thử nghiệm

  • Tạo một lớp thử nghiệm java, chẳng hạn, ParameterizedTest1.java.

  • Thêm phương thức thử nghiệm tham sốTest () vào lớp thử nghiệm của bạn. Phương thức này nhận một chuỗi làm tham số đầu vào.

  • Thêm chú thích @Parameters ("myName") vào phương thức này. Tham số sẽ được chuyển một giá trị từ testng.xml, chúng ta sẽ thấy trong bước tiếp theo.

Tạo tệp lớp java có tên ParameterizedTest1.java trong C:\>TestNG_WORKSPACE.

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class ParameterizedTest1 {
   @Test
   @Parameters("myName")
   public void parameterTest(String myName) {
      System.out.println("Parameterized value is : " + myName);
   }
}

Tạo testng.xml

Tạo testng.xml trong C:\>TestNG_WORKSPACE để thực thi (các) trường hợp thử nghiệm.

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
   
      <parameter name = "myName" value="manisha"/> 
      
      <classes>
         <class name = "ParameterizedTest1" />
      </classes>
      
   </test>
</suite>

Chúng ta cũng có thể xác định các tham số ở cấp độ <suite>. Giả sử chúng ta đã xác định myName ở cả cấp độ <suite> và <test>. Trong những trường hợp này, các quy tắc xác định phạm vi thông thường được áp dụng. Có nghĩa là bất kỳ lớp nào bên trong thẻ <test> sẽ thấy giá trị của tham số được xác định trong <test>, trong khi các lớp trong phần còn lại của tệp testng.xml sẽ thấy giá trị được xác định trong <suite>.

Biên dịch lớp test case bằng javac.

C:\TestNG_WORKSPACE>javac ParameterizedTest1.java

Bây giờ, chạy testng.xml, phương thức này sẽ chạy phương thức parameterTest . TestNG sẽ cố gắng tìm một tham số có tên myName trước trong thẻ <test>, sau đó, nếu không thể tìm thấy, nó sẽ tìm kiếm trong thẻ <suit> có kèm theo.

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Xác minh kết quả đầu ra.

Parameterized value is : manisha

===============================================
Suite1
Total tests run: 1, Failures: 0, Skips: 0
===============================================

TestNG sẽ tự động chuyển đổi giá trị được chỉ định trong testng.xml thành loại tham số của bạn. Dưới đây là các loại được hỗ trợ -

  • String
  • int/Integer
  • boolean/Boolean
  • byte/Byte
  • char/Character
  • double/Double
  • float/Float
  • long/Long
  • short/Short

Truyền tham số với Dataproviders

Khi bạn cần truyền tham số phức tạp hoặc tham số cần được tạo từ Java (đối tượng phức tạp, đối tượng đọc từ tệp thuộc tính hoặc cơ sở dữ liệu, v.v.), có thể truyền tham số bằng Dataproviders.

Nhà cung cấp dữ liệu là một phương thức được chú thích bằng @DataProvider. Chú thích này chỉ có một thuộc tính chuỗi: tên của nó. Nếu tên không được cung cấp, tên của nhà cung cấp dữ liệu sẽ tự động mặc định thành tên của phương thức. Một nhà cung cấp dữ liệu trả về một mảng các đối tượng.

Các ví dụ sau đây trình bày cách sử dụng các nhà cung cấp dữ liệu. Ví dụ đầu tiên là về @DataProvider sử dụng Vector, String hoặc Integer làm tham số và ví dụ thứ hai là về @DataProvider sử dụng đối tượng làm tham số.

ví dụ 1

Ở đây, @DataProvider chuyển Integer và Boolean làm tham số.

Create Java class

Tạo một lớp java có tên là PrimeNumberChecker.java. Lớp này kiểm tra xem số có phải là số nguyên tố hay không. Tạo lớp học này trongC:\>TestNG_WORKSPACE.

public class PrimeNumberChecker {
   public Boolean validate(final Integer primeNumber) {
   
      for (int i = 2; i < (primeNumber / 2); i++) {
         if (primeNumber % i == 0) {
            return false;
         }
      }
      return true;
   }
}

Create Test Case Class

  • Tạo một lớp thử nghiệm java, chẳng hạn, ParamTestWithDataProvider1.java.

  • Xác định phương thức primeNumbers (), được định nghĩa là nhà cung cấp dữ liệu bằng cách sử dụng chú thích. Phương thức này trả về một mảng các đối tượng.

  • Thêm phương thức thử nghiệm testPrimeNumberChecker () vào lớp thử nghiệm của bạn. Phương thức này lấy Integer và Boolean làm tham số đầu vào. Phương thức này xác nhận nếu tham số được truyền là một số nguyên tố.

  • Thêm chú thích @Test (dataProvider = "test1") vào phương pháp này. Thuộc tính dataProvider được ánh xạ tới "test1".

Tạo tệp lớp java có tên ParamTestWithDataProvider1.java trong C:\>TestNG_WORKSPACE.

import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class ParamTestWithDataProvider1 {
   private PrimeNumberChecker primeNumberChecker;

   @BeforeMethod
   public void initialize() {
      primeNumberChecker = new PrimeNumberChecker();
   }

   @DataProvider(name = "test1")
   public static Object[][] primeNumbers() {
      return new Object[][] {{2, true}, {6, false}, {19, true}, {22, false}, {23, true}};
   }

   // This test will run 4 times since we have 5 parameters defined
   @Test(dataProvider = "test1")
   public void testPrimeNumberChecker(Integer inputNumber, Boolean expectedResult) {
      System.out.println(inputNumber + " " + expectedResult);
      Assert.assertEquals(expectedResult, primeNumberChecker.validate(inputNumber));
   }
}

Create testng.xml

Tạo testng.xml C:\>TestNG_WORKSPACE để thực thi (các) trường hợp Kiểm thử.

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
      <classes>
         <class name = "ParamTestWithDataProvider1" />
      </classes>
   </test>
</suite>

Biên dịch lớp Test case bằng javac.

C:\TestNG_WORKSPACE>.javac ParamTestWithDataProvider1.java PrimeNumberChecker.java

Bây giờ, hãy chạy testng.xml.

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Xác minh kết quả đầu ra.

2 true
   6 false
   19 true
   22 false
   23 true

===============================================
   Suite1
   Total tests run: 5, Failures: 0, Skips: 0
===============================================

Ví dụ 2

Ở đây, @DataProvider chuyển Đối tượng làm tham số.

Create Java class

Tạo một lớp java Bean.java, là một đối tượng đơn giản với các phương thức get / set, trong C:\>TestNG_WORKSPACE.

public class Bean {
   private String val;
   private int i;
   
   public Bean(String val, int i) {
      this.val = val;
      this.i = i;
   }
   
   public String getVal() {
      return val;
   }
   
   public void setVal(String val) {
      this.val = val;
   }
   
   public int getI() {
      return i;
   }
   
   public void setI(int i) {
      this.i = i;
   }
}

Create Test Case Class

  • Tạo một lớp thử nghiệm java, chẳng hạn, ParamTestWithDataProvider2.java.

  • Xác định phương thức primeNumbers (), được định nghĩa như một trình cung cấp dữ liệu bằng cách sử dụng chú thích. Phương thức này trả về một mảng đối tượng.

  • Thêm phương pháp thử testMethod () vào lớp thử nghiệm của bạn. Phương thức này nhận một đối tượng bean làm tham số.

  • Thêm chú thích @Test (dataProvider = "test1") vào phương pháp này. Thuộc tính dataProvider được ánh xạ tới "test1".

Tạo tệp lớp java có tên là ParamTestWithDataProvider2.java trong C:\>TestNG_WORKSPACE.

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class ParamTestWithDataProvider2 {
   @DataProvider(name = "test1")
   public static Object[][] primeNumbers() {
      return new Object[][] { { new Bean("hi I am the bean", 111) } };
   }

   @Test(dataProvider = "test1")
   public void testMethod(Bean myBean) {
      System.out.println(myBean.getVal() + " " + myBean.getI());
   }
}

Create testng.xml

Tạo testng.xml trong C:\>TestNG_WORKSPACE để thực thi (các) trường hợp thử nghiệm.

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
      <classes>
         <class name = "ParamTestWithDataProvider2" />
      </classes>
   </test>
</suite>

Biên dịch lớp test case bằng javac.

C:\TestNG_WORKSPACE>javac ParamTestWithDataProvider2.java Bean.java

Bây giờ, hãy chạy testng.xml.

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Xác minh kết quả đầu ra.

hi I am the bean 111

===============================================
   Suite1
   Total tests run: 1, Failures: 0, Skips: 0
===============================================

Bây giờ bạn đã hiểu TestNG và các thử nghiệm khác nhau của nó, bạn phải lo lắng về cách cấu trúc lại mã JUnit hiện có của mình. Không cần phải lo lắng, vì TestNG cung cấp một cách để chuyển từ JUnit sang TestNG theo tốc độ của riêng bạn. Bạn có thể thực thi các trường hợp thử nghiệm JUnit hiện có của mình bằng TestNG.

TestNG có thể tự động nhận dạng và chạy các bài kiểm tra JUnit, do đó bạn có thể sử dụng TestNG như một người chạy cho tất cả các bài kiểm tra hiện có của bạn và viết các bài kiểm tra mới bằng TestNG. Tất cả những gì bạn phải làm là đặt thư viện JUnit trên đường dẫn TestNG, để nó có thể tìm và sử dụng các lớp JUnit, thay đổi trình chạy thử nghiệm của bạn từ JUnit thành TestNG trong Ant, sau đó chạy TestNG ở chế độ "hỗn hợp". Bằng cách này, bạn có thể có tất cả các bài kiểm tra của mình trong cùng một dự án, thậm chí trong cùng một gói và bắt đầu sử dụng TestNG. Cách tiếp cận này cũng cho phép bạn chuyển đổi các bài kiểm tra JUnit hiện có của mình sang TestNG tăng dần.

Hãy để chúng tôi có một ví dụ để chứng minh khả năng tuyệt vời này của TestNG.

Tạo lớp trường hợp thử nghiệm JUnit

Tạo một lớp java, là một lớp thử nghiệm JUnit, TestJunit.java trong C:\>TestNG_WORKSPACE.

import org.junit.Test;
import static org.testng.AssertJUnit.assertEquals;

public class TestJunit {
   @Test
   public void testAdd() {
      String str = "Junit testing using TestNG";
      AssertEquals("Junit testing using TestNG",str);
   }
}

Bây giờ, hãy viết testng.xml trong C:\>TestNG_WORKSPACE, sẽ chứa thẻ <suite> như sau:

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name = "Converted JUnit suite" >
   <test name = "JUnitTests" junit="true">
      <classes>
         <class name = "TestJunit" />
      </classes>
   </test>
</suite>

Để thực thi các trường hợp kiểm tra JUnit, hãy xác định thuộc tính junit = "true" như trong xml ở trên. Lớp testJunit testJunit được định nghĩa trong tên lớp.

Đối với JUnit 4, TestNG sẽ sử dụng trình chạy org.junit.runner.JUnitCore để chạy các thử nghiệm của bạn.

Biên dịch tất cả các lớp java bằng javac.

C:\TestNG_WORKSPACE>javac TestJunit.java

Bây giờ, chạy testng.xml, sẽ chạy trường hợp thử nghiệm JUnit dưới dạng TestNG.

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE:C:\TestNG_WORKSPACE\lib\junit-4.11.jar" org.testng.TestNG testng.xml

Ở đây, chúng tôi đã đặt junit-4.11.jar dưới C: \ TestNG_WORKSPACE \ lib \ junit-4.11.jar.

Xác minh kết quả đầu ra.

===============================================
   Converted JUnit suite

   Total tests run: 1, Failures: 0, Skips: 0
===============================================

Báo cáo là phần quan trọng nhất của bất kỳ quá trình thực thi thử nghiệm nào, vì nó giúp người dùng hiểu kết quả của việc thực thi thử nghiệm, điểm lỗi và lý do dẫn đến thất bại. Mặt khác, ghi nhật ký là điều quan trọng để theo dõi quá trình thực thi hoặc để gỡ lỗi trong trường hợp có bất kỳ lỗi nào.

TestNG, theo mặc định, tạo một loại báo cáo khác để thực hiện kiểm tra. Điều này bao gồm một HTML và một đầu ra báo cáo XML. TestNG cũng cho phép người dùng viết báo cáo của riêng họ và sử dụng nó với TestNG. Ngoài ra còn có một tùy chọn để viết nhật ký của riêng bạn, được TestNG thông báo trong thời gian chạy.

Có hai cách để tạo báo cáo với TestNG -

  • Listeners- Để triển khai một lớp người nghe, lớp phải triển khai giao diện org.testng.ITestListener . Các lớp này được TestNG thông báo trong thời gian chạy khi bài kiểm tra bắt đầu, kết thúc, không đạt, bỏ qua hoặc vượt qua.

  • Reporters- Để triển khai một lớp báo cáo, lớp phải triển khai giao diện org.testng.IReporter . Các lớp này được gọi khi toàn bộ quá trình chạy bộ kết thúc. Đối tượng chứa thông tin của toàn bộ quá trình chạy thử nghiệm được chuyển đến lớp này khi được gọi.

Trong chương này, chúng tôi sẽ có bốn ví dụ khác nhau để chứng minh bốn trường hợp báo cáo và ghi nhật ký khác nhau -

Sr.No. Trường hợp & Ví dụ
1 Ghi nhật ký tùy chỉnh

Ví dụ này minh họa cách viết nhật ký của riêng bạn.

2 Báo cáo tùy chỉnh

Ví dụ này minh họa cách viết báo cáo của riêng bạn.

3 Báo cáo HTML và XML

Ví dụ này minh họa báo cáo HTML và XML mặc định do TestNG tạo ra.

4 Báo cáo JUnit

Ví dụ này minh họa cách tạo báo cáo JUnit từ báo cáo TestNG.

Trong chương này, chúng tôi sẽ trình bày cách chạy TestNG bằng ANT. Hãy làm theo các bước dưới đây -

Bước 1: Tải xuống Apache Ant

Tải xuống phiên bản mới nhất của Apache Ant

Hệ điều hành Tên lưu trữ
các cửa sổ apache-ant-1.8.4-bin.zip
Linux apache-ant-1.8.4-bin.tar.gz
Mac apache-ant-1.8.4-bin.tar.gz

Bước 2: Đặt Môi trường Kiến

Đặt ANT_HOMEbiến môi trường để trỏ đến vị trí thư mục cơ sở, nơi các thư viện ANT được lưu trữ trên máy của bạn. Giả sử chúng ta đã lưu trữ các thư viện Ant trong thư mục apache-ant-1.8.4.

Hệ điều hành Đầu ra
các cửa sổ Đặt biến môi trường ANT_HOME thành C: \ Program Files \ Apache Software Foundation \ apache-ant-1.8.4
Linux Xuất ANT_HOME = / usr / local / apache-ant-1.8.4
Mac Xuất ANT_HOME = / Library / apache-ant-1.8.4

Nối vị trí trình biên dịch Ant vào Đường dẫn hệ thống như sau:

Hệ điều hành Sự miêu tả
các cửa sổ Nối chuỗi% ANT_HOME \ bin vào cuối biến hệ thống, Đường dẫn.
Linux Xuất PATH =$PATH:$ANT_HOME / bin /
Mac Không yêu cầu.

Bước 3: Tải xuống TestNG Archive

Tải xuống các tệp jar cần thiết http://www.testng.org.

Hệ điều hành Tên lưu trữ
các cửa sổ testng-6.8.jar
Linux testng-6.8.jar
Mac testng-6.8.jar

Bước 4: Tạo cấu trúc dự án

  • Tạo một thư mục TestNGWithAnt trong C:\>TestNG_WORKSPACE.

  • Tạo một thư mục src trong C:\>TestNG_WORKSPACE>TestNGWithAnt.

  • Tạo một thư mục test trong C:\>TestNG_WORKSPACE>TestNGWithAnt.

  • Tạo một thư mục lib trong C:\>TestNG_WORKSPACE>TestNGWithAnt.

  • Tạo nên MessageUtil lớp trong C:\>TestNG_WORKSPACE>TestNGWithAnt>src thư mục.

/*
* This class prints the given message on console.
*/

public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message) {
      this.message = message; 
   }

   // prints the message
   public void printMessage() {
      System.out.println(message);
      return message;
   }   

   // add "Hi!" to the message
   public String salutationMessage() {
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }   
}
  • Tạo lớp TestMessageUtil trong C:\>TestNG_WORKSPACE>TestNGWithAnt>src thư mục.

import org.testng.Assert;
import org.testng.annotations.Test;


public class TestMessageUtil {
   String message = "Manisha";	
   MessageUtil messageUtil = new MessageUtil(message);

   @Test
   public void testPrintMessage() {	
      System.out.println("Inside testPrintMessage()");     
      Assert.assertEquals(message,messageUtil.printMessage());
   }

   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Manisha";
      Assert.assertEquals(message,messageUtil.salutationMessage());
   }
}
  • Sao chép testng-6.8.jar vào C:\>TestNG_WORKSPACE>TestNGWithAnt>lib thư mục.

Tạo ANT build.xml

Đầu tiên, chúng ta cần xác định nhiệm vụ TestNG Ant như sau:

<taskdef name = "testng" classname = "org.testng.TestNGAntTask">
   <classpath>
      <pathelement location = "lib/testng-6.8.jar"/>
   </classpath>
</taskdef>

Sau đó, chúng tôi sẽ sử dụng <testng> nhiệm vụ trong Ant để thực thi các trường hợp kiểm tra TestNG của chúng tôi.

Các build.xml tệp như sau:

<project name = "TestNGTest" default = "test" basedir = ".">

   <!-- Define <testng> task -->

   <taskdef name = "testng" classname = "org.testng.TestNGAntTask">
      <classpath>
         <pathelement location = "lib/testng-6.8.jar"/>
      </classpath>
   </taskdef>

   <property name = "testdir" location = "test" />
   <property name = "srcdir" location = "src" />
   <property name = "libdir" location = "lib" />
   <property name = "full-compile" value="true" />
   
   <path id = "classpath.base"/>
   <path id = "classpath.test">
   
   <fileset dir = "${libdir}"> <include name = "**/*.jar" /> </fileset> <pathelement location = "${testdir}" />
   <pathelement location = "${srcdir}" /> <path refid = "classpath.base" /> </path> <target name = "clean" > <delete verbose="${full-compile}">
         <fileset dir = "${testdir}" includes="**/*.class" /> </delete> </target> <target name = "compile" depends="clean"> <javac srcdir = "${srcdir}" destdir = "${testdir}" verbose="${full-compile}">
         <classpath refid = "classpath.test"/>
      </javac>
   </target>
   
   <target name = "test" depends="compile">
      <testng outputdir = "${testdir}" classpathref="classpath.test"> <xmlfileset dir = "${srcdir}" includes="testng.xml"/> 
      </testng>
   </target>
   
</project>

Chạy lệnh Ant sau đây.

C:\TestNG_WORKSPACE\TestNGWithAnt>ant

Xác minh kết quả đầu ra.

test:
   [testng] [TestNG] Running:
   [testng]   C:\TestNG_WORKSPACE\TestNGWithAnt\src\testng.xml
   [testng] 
   [testng] Inside testPrintMessage()
   [testng] Manisha
   [testng] Inside testSalutationMessage()
   [testng] Hi!Manisha
   [testng] 
   [testng] ===============================================
   [testng] Plug ANT test Suite
   [testng] Total tests run: 2, Failures: 0, Skips: 0
   [testng] ===============================================
   [testng] 

BUILD SUCCESSFUL
Total time: 1 second

Để thiết lập TestNG với Eclipse, hãy làm theo các bước dưới đây:

Bước 1: Tải xuống TestNG Archive

Tải xuống phiên bản mới nhất của tệp jar TestNG từ http://www.testng.org

Hệ điều hành Tên lưu trữ
các cửa sổ testng-6.8.jar
Linux testng-6.8.jar
Mac testng-6.8.jar

Chúng tôi giả sử bạn đã sao chép tệp JAR ở trên trong thư mục C: \> TestNG.

Bước 2: Đặt môi trường Eclipse

  • Mở eclipse → nhấp chuột phải vào dự án và đi đến thuộc tính → Đường dẫn xây dựng → Định cấu hình Đường dẫn xây dựng và thêm testng-6.8.jar trong thư viện bằng nút Thêm lọ ngoài .

  • Chúng tôi giả định rằng Eclipse của bạn có trình cắm sẵn TestNG; nếu nó không có sẵn, vui lòng tải phiên bản mới nhất bằng cách sử dụng trang web cập nhật.

    • Trong IDE Eclipse của bạn, chọn Trợ giúp / Cập nhật phần mềm / Tìm và Cài đặt .

    • Tìm kiếm các tính năng mới để cài đặt.

    • Trang web từ xa mới.

    • Đối với Eclipse 3.4 trở lên, hãy nhập http://beust.com/eclipse.

    • Đối với Eclipse 3.3 trở xuống, hãy nhập http://beust.com/eclipse1.

    • Đảm bảo rằng hộp kiểm bên cạnh URL được chọn và nhấp vào Tiếp theo .

    • Sau đó, Eclipse sẽ hướng dẫn bạn thực hiện quá trình này.

Bây giờ, Eclipse của bạn đã sẵn sàng cho việc phát triển các trường hợp thử nghiệm TestNG.

Bước 3: Xác minh cài đặt TestNG trong Eclipse

  • Tạo một dự án TestNGProject trong Eclipse tại bất kỳ vị trí nào.

  • Tạo một lớp MessageUtil để kiểm tra trong dự án.

/*
* This class prints the given message on console.
*/

public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message) {
      this.message = message;
   }

   // prints the message
   public String printMessage() {
      System.out.println(message);
      return message;
   }   
}
  • Tạo một lớp thử nghiệm TestNGExample trong dự án.

import org.testng.Assert;
import org.testng.annotations.Test;

public class TestNGExample {
   String message = "Hello World";	
   MessageUtil messageUtil = new MessageUtil(message);

   @Test
   public void testPrintMessage() {	  
      Assert.assertEquals(message,messageUtil.printMessage());
   }
}

Cấu trúc dự án phải như sau:

Cuối cùng, xác minh đầu ra của chương trình bằng cách nhấp chuột phải vào chương trình và chạy dưới dạng TestNG.

Xác minh kết quả.