TestNG - Написание тестов

Написание теста в TestNG в основном включает следующие шаги:

  • Напишите бизнес-логику вашего теста и вставьте аннотации TestNG в свой код.

  • Добавьте информацию о своем тесте (например, имя класса, группы, которые вы хотите запустить, и т.д.) в файл testng.xml или build.xml.

  • Запустите TestNG.

Здесь мы увидим один полный пример тестирования TestNG с использованием класса POJO, класса бизнес-логики и тестового xml, который будет запускаться TestNG.

Создайте EmployeeDetails.java в C:\>TestNG_WORKSPACE, который является классом 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 класс используется для -

  • получить / установить значение имени сотрудника.
  • получить / установить размер ежемесячной заработной платы сотрудника.
  • получить / установить значение возраста сотрудника.

Создать EmpBusinessLogic.java в C:\>TestNG_WORKSPACE, который содержит бизнес-логику.

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 класс используется для расчета -

  • годовая зарплата работника.
  • оценочная сумма сотрудника.

Теперь давайте создадим класс TestNG с именем TestEmployeeDetails.javaв C: \> TestNG_WORKSPACE. Класс TestNG - это класс Java, который содержит как минимум одну аннотацию TestNG. Этот класс содержит тестовые примеры для тестирования. Тест TestNG можно настроить с помощью аннотаций @BeforeXXX и @AfterXXX (мы увидим это в главе TestNG - Процедура выполнения ), что позволяет выполнять некоторую логику Java до и после определенной точки.

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 класс используется для тестирования методов EmpBusinessLogicкласс. Он делает следующее -

  • Проверяет годовую зарплату сотрудника.

  • Проверяет оценочную сумму сотрудника.

Прежде чем запускать тесты, необходимо настроить TestNG с помощью специального XML-файла, обычно называемого testng.xml. Синтаксис этого файла очень прост, и его содержимое показано ниже. Создайте этот файл вC:\>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>

Подробности вышеупомянутого файла следующие -

  • Набор представлен одним файлом XML. Он может содержать один или несколько тестов и определяется тегом <suite>.

  • Тег <test> представляет один тест и может содержать один или несколько классов TestNG.

  • Тег <class> представляет класс TestNG. Это класс Java, содержащий как минимум одну аннотацию TestNG. Он может содержать один или несколько методов тестирования.

Скомпилируйте классы тестового примера с помощью javac.

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

Теперь TestNG с помощью следующей команды -

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

Если все было сделано правильно, вы должны увидеть результаты ваших тестов в консоли. Кроме того, TestNG создает очень хороший отчет HTML в папке с именемtest-outputкоторый автоматически создается в текущем каталоге. Если вы откроете его и загрузите index.html, вы увидите страницу, похожую на ту, что на изображении ниже -