Учебники

TestNG — Краткое руководство

TestNG — Обзор

Тестирование — это процесс проверки функциональности приложения, чтобы убедиться, что оно работает в соответствии с требованиями. Модульное тестирование проявляется на уровне разработчика, где принимаются адекватные меры для тестирования каждого отдельного объекта (класса или метода), чтобы убедиться, что конечный продукт соответствует требованиям.

JUnit побудил разработчиков понять полезность тестов, особенно модульных, по сравнению с любой другой средой тестирования. Используя довольно простую, прагматичную и строгую архитектуру, JUnit смог «заразить» множество разработчиков. Загляните в наш учебник по JUnit, чтобы лучше понять его возможности. У JUnit, в то же время, есть и некоторые недостатки, которые перечислены ниже —

  • Изначально предназначенный только для модульного тестирования, теперь используется для всех видов тестирования.

  • Невозможно выполнить тестирование зависимостей.

  • Плохое управление конфигурацией (setUp / tearDown).

  • Навязчиво (заставляет вас расширять классы и называть ваши методы определенным образом).

  • Статическая модель программирования (вынуждает вас перекомпилировать без необходимости).

  • Управление различными наборами тестов в сложных проектах может быть очень сложным.

Изначально предназначенный только для модульного тестирования, теперь используется для всех видов тестирования.

Невозможно выполнить тестирование зависимостей.

Плохое управление конфигурацией (setUp / tearDown).

Навязчиво (заставляет вас расширять классы и называть ваши методы определенным образом).

Статическая модель программирования (вынуждает вас перекомпилировать без необходимости).

Управление различными наборами тестов в сложных проектах может быть очень сложным.

Что такое TestNG?

Определение TestNG согласно его документации следующее:

TestNG — это среда тестирования, вдохновленная JUnit и NUnit, но представляющая некоторые новые функциональные возможности, которые делают ее более мощной и простой в использовании.

TestNG — это система автоматического тестирования с открытым исходным кодом; где NG означает N ext G. TestNG похож на JUnit (особенно JUnit 4), но это не расширение JUnit. Он вдохновлен JUnit. Он разработан, чтобы быть лучше, чем JUnit, особенно при тестировании интегрированных классов. Создатель TestNG — Седрик Беуст .

Устраняя большинство ограничений старой платформы, TestNG дает разработчику возможность создавать более гибкие и мощные тесты. Поскольку он в значительной степени заимствует из Java-аннотаций (представленных в JDK 5.0) для определения тестов, он также может показать вам, как использовать эту новую функцию языка Java в реальной производственной среде.

TestNG Особенности

  • Поддерживает аннотации.

  • TestNG использует больше возможностей Java и OO.

  • Поддерживает тестирование интегрированных классов (например, по умолчанию нет необходимости создавать новый экземпляр класса теста для каждого метода тестирования).

  • Разделяет тестовый код времени компиляции и информацию о конфигурации / данных времени выполнения.

  • Гибкая конфигурация во время выполнения.

  • Представляет «тестовые группы». После того, как вы скомпилировали свои тесты, вы можете просто попросить TestNG запустить все тесты «front-end» или «fast», «slow», «database» и т. Д.

  • Поддержка зависимых методов тестирования, параллельного тестирования, нагрузочного тестирования и частичного отказа.

  • Гибкий плагин API.

  • Поддержка многопоточного тестирования.

Поддерживает аннотации.

TestNG использует больше возможностей Java и OO.

Поддерживает тестирование интегрированных классов (например, по умолчанию нет необходимости создавать новый экземпляр класса теста для каждого метода тестирования).

Разделяет тестовый код времени компиляции и информацию о конфигурации / данных времени выполнения.

Гибкая конфигурация во время выполнения.

Представляет «тестовые группы». После того, как вы скомпилировали свои тесты, вы можете просто попросить TestNG запустить все тесты «front-end» или «fast», «slow», «database» и т. Д.

Поддержка зависимых методов тестирования, параллельного тестирования, нагрузочного тестирования и частичного отказа.

Гибкий плагин API.

Поддержка многопоточного тестирования.

TestNG — Окружающая среда

TestNG — это фреймворк для Java, поэтому самое первое требование — установить JDK на вашем компьютере.

Системные требования

JDK 1,5 или выше.
объем памяти Нет минимальных требований.
Дисковое пространство Нет минимальных требований.
Операционная система Нет минимальных требований.

Шаг 1 — Проверьте установку Java на вашем компьютере

Откройте консоль и выполните команду Java в зависимости от операционной системы, установленной в вашей системе.

Операционные системы задача команда
Windows Открытая командная консоль c: \> Java-версия
Linux Открытый командный терминал $ java-версия
макинтош Открытый терминал машина: ~ Джозеф $ Java-версия

Давайте проверим вывод для всех операционных систем —

Операционные системы Выход
Windows

Java-версия «1.7.0_25»

Java (TM) SE Runtime Environment (сборка 1.7.0_25-b15)

Java HotSpot (TM) 64-битная серверная виртуальная машина (сборка 23.25-b01, смешанный режим)

Linux

Java-версия «1.7.0_25»

Java (TM) SE Runtime Environment (сборка 1.7.0_25-b15)

Java HotSpot (TM) 64-битная серверная виртуальная машина (сборка 23.25-b01, смешанный режим)

макинтош

Java-версия «1.7.0_25»

Java (TM) SE Runtime Environment (сборка 1.7.0_25-b15)

Java HotSpot (TM) 64-битная серверная виртуальная машина (сборка 23.25-b01, смешанный режим)

Java-версия «1.7.0_25»

Java (TM) SE Runtime Environment (сборка 1.7.0_25-b15)

Java HotSpot (TM) 64-битная серверная виртуальная машина (сборка 23.25-b01, смешанный режим)

Java-версия «1.7.0_25»

Java (TM) SE Runtime Environment (сборка 1.7.0_25-b15)

Java HotSpot (TM) 64-битная серверная виртуальная машина (сборка 23.25-b01, смешанный режим)

Java-версия «1.7.0_25»

Java (TM) SE Runtime Environment (сборка 1.7.0_25-b15)

Java HotSpot (TM) 64-битная серверная виртуальная машина (сборка 23.25-b01, смешанный режим)

Если у вас нет Java, установите Java Software Development Kit (SDK) по адресу https://www.oracle.com/technetwork/java/javase/downloads/index.html . Мы предполагаем Java 1.7.0_25 в качестве установленной версии для этого урока.

Шаг 2: Установите среду JAVA

Задайте переменную среды JAVA_HOME, чтобы она указывала на местоположение базовой директории, где на вашем компьютере установлена ​​Java. Например,

Операционные системы Выход
Windows Задайте для переменной среды JAVA_HOME значение C: \ Program Files \ Java \ jdk1.7.0_25.
Linux Экспорт JAVA_HOME = / usr / local / java-current.
макинтош Экспорт JAVA_HOME = / Библиотека / Java / Home.

Добавьте расположение компилятора Java в системный путь.

Операционные системы Выход
Windows Добавьте строку C: \ Program Files \ Java \ jdk1.7.0_25 \ bin в конце системной переменной Path.
Linux Экспорт PATH = $ PATH: $ JAVA_HOME / bin /
макинтош Не требуется

Проверьте установку Java с помощью команды java -version, как описано выше.

Шаг 3: Загрузить архив TestNG

Загрузите последнюю версию файла jar TestNG с http://www.testng.org . На момент написания этого руководства мы загрузили testng-6.8.jar и скопировали его в папку C: \> TestNG.

Операционные системы Название архива
Windows TestNG-6.8.jar
Linux TestNG-6.8.jar
макинтош TestNG-6.8.jar

Шаг 4: Установите среду TestNG

Задайте переменную среды TESTNG_HOME, чтобы она указывала на местоположение базовой директории, где на вашем компьютере хранится jar TestNG. В следующей таблице показано, как установить переменную среды в Windows, Linux и Mac, при условии, что мы сохранили testng-6.8.jar в папке C: \> TestNG.

Операционные системы Описание
Windows Установите переменную окружения TESTNG_HOME в C: \ TESTNG.
Linux Экспорт TESTNG_HOME = / usr / local / TESTNG
макинтош Export TESTNG_HOME = / Библиотека / TESTNG

Шаг 5: Установите переменную CLASSPATH

Задайте переменную среды CLASSPATH, чтобы она указывала на местоположение jar TestNG.

Операционные системы Описание
Windows Задайте для переменной среды CLASSPATH значение% CLASSPATH%;% TESTNG_HOME% \ testng-6.8.jar.
Linux Экспорт CLASSPATH = $ CLASSPATH: $ TESTNG_HOME / testng-6.8.jar.
макинтош Экспорт CLASSPATH = $ CLASSPATH: $ TESTNG_HOME / testng-6.8.jar.

Шаг 6: Тестовая настройка TestNG

Создайте файл Java-класса с именем TestNGSimpleTest в 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 может быть вызван несколькими различными способами —

  • С файлом testng.xml.
  • С АНТ.
  • Из командной строки.

Давайте вызовем с помощью файла testng.xml. Создайте 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 = "TestNGSimpleTest"/>
      </classes>
   </test>
</suite>	

Шаг 7: Проверьте результат

Скомпилируйте класс с помощью компилятора javac следующим образом:

C:\TestNG_WORKSPACE>javac TestNGSimpleTest.java

Теперь вызовите testng.xml, чтобы увидеть результат —

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

Проверьте вывод.

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

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

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

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

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

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

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

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

Запустите TestNG.

Здесь мы увидим один полный пример тестирования TestNG с использованием класса POJO, класса Business logic и test 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. Он может содержать один или несколько методов тестирования.

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

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

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

Скомпилируйте классы Test case, используя 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, вы увидите страницу, похожую на ту, что изображена на картинке ниже —

Письменные тесты

TestNG — Основные аннотации

Традиционный способ обозначить методы тестирования в JUnit 3 заключается в добавлении к их именам префикса test. Это очень эффективный метод для обозначения определенных методов в классе как имеющих особое значение, но именование не очень хорошо масштабируется (что, если мы хотим добавить больше тегов для разных структур?) И является довольно негибким (что, если мы хотите передать дополнительные параметры в среду тестирования?).

Аннотации были формально добавлены к языку Java в JDK 5, и TestNG сделал выбор использовать аннотации для аннотирования тестовых классов.

Вот список аннотаций, которые поддерживает TestNG —

Sr.No. Аннотация и описание
1

@BeforeSuite

Аннотированный метод будет запущен только один раз до запуска всех тестов в этом наборе.

2

@AfterSuite

Аннотированный метод будет запущен только один раз после выполнения всех тестов в этом наборе.

3

@BeforeClass

Аннотированный метод будет запущен только один раз, прежде чем будет вызван первый тестовый метод в текущем классе.

4

@После школы

Аннотированный метод будет запущен только один раз после запуска всех тестовых методов в текущем классе.

5

@BeforeTest

Аннотированный метод будет запущен до запуска любого тестового метода, принадлежащего классам внутри тега <test>.

6

@AfterTest

Аннотированный метод будет запущен после запуска всех тестовых методов, принадлежащих классам внутри тега <test>.

7

@BeforeGroups

Список групп, которые этот метод конфигурации будет запускать раньше. Этот метод гарантированно будет запущен незадолго до того, как будет вызван первый метод тестирования, принадлежащий любой из этих групп.

8

@AfterGroups

Список групп, после которых будет запускаться этот метод конфигурации. Этот метод гарантированно будет запущен вскоре после вызова последнего метода тестирования, принадлежащего любой из этих групп.

9

@BeforeMethod

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

10

@AfterMethod

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

11

@DataProvider

Отмечает метод как предоставление данных для метода тестирования. Аннотированный метод должен возвращать объект [] [], где каждому объекту [] можно назначить список параметров метода тестирования. Метод @Test, который хочет получать данные от этого DataProvider, должен использовать имя dataProvider, равное имени этой аннотации.

12

@Factory

Помечает метод как фабрику, которая возвращает объекты, которые будут использоваться TestNG в качестве тестовых классов. Метод должен возвращать Object [].

13

@Listeners

Определяет слушателей на тестовом классе.

14

@Parameters

Описывает, как передавать параметры в метод @Test.

15

@Тестовое задание

Помечает класс или метод как часть теста.

@BeforeSuite

Аннотированный метод будет запущен только один раз до запуска всех тестов в этом наборе.

@AfterSuite

Аннотированный метод будет запущен только один раз после выполнения всех тестов в этом наборе.

@BeforeClass

Аннотированный метод будет запущен только один раз, прежде чем будет вызван первый тестовый метод в текущем классе.

@После школы

Аннотированный метод будет запущен только один раз после запуска всех тестовых методов в текущем классе.

@BeforeTest

Аннотированный метод будет запущен до запуска любого тестового метода, принадлежащего классам внутри тега <test>.

@AfterTest

Аннотированный метод будет запущен после запуска всех тестовых методов, принадлежащих классам внутри тега <test>.

@BeforeGroups

Список групп, которые этот метод конфигурации будет запускать раньше. Этот метод гарантированно будет запущен незадолго до того, как будет вызван первый метод тестирования, принадлежащий любой из этих групп.

@AfterGroups

Список групп, после которых будет запускаться этот метод конфигурации. Этот метод гарантированно будет запущен вскоре после вызова последнего метода тестирования, принадлежащего любой из этих групп.

@BeforeMethod

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

@AfterMethod

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

@DataProvider

Отмечает метод как предоставление данных для метода тестирования. Аннотированный метод должен возвращать объект [] [], где каждому объекту [] можно назначить список параметров метода тестирования. Метод @Test, который хочет получать данные от этого DataProvider, должен использовать имя dataProvider, равное имени этой аннотации.

@Factory

Помечает метод как фабрику, которая возвращает объекты, которые будут использоваться TestNG в качестве тестовых классов. Метод должен возвращать Object [].

@Listeners

Определяет слушателей на тестовом классе.

@Parameters

Описывает, как передавать параметры в метод @Test.

@Тестовое задание

Помечает класс или метод как часть теста.

Преимущества использования аннотаций

Ниже приведены некоторые преимущества использования аннотаций.

  • TestNG определяет интересующие его методы, просматривая аннотации. Следовательно, имена методов не ограничены каким-либо шаблоном или форматом.

  • Мы можем передать дополнительные параметры в аннотации.

  • Аннотации строго напечатаны, поэтому компилятор сразу же отметит любые ошибки.

  • Тестовым классам больше не нужно ничего расширять (например, TestCase, для JUnit 3).

TestNG определяет интересующие его методы, просматривая аннотации. Следовательно, имена методов не ограничены каким-либо шаблоном или форматом.

Мы можем передать дополнительные параметры в аннотации.

Аннотации строго напечатаны, поэтому компилятор сразу же отметит любые ошибки.

Тестовым классам больше не нужно ничего расширять (например, TestCase, для JUnit 3).

TestNG — процедура исключения

В этой главе описывается процедура выполнения методов в TestNG. Это объясняет порядок вызываемых методов. Вот процедура выполнения методов API тестирования TestNG с примером.

Создайте файл класса Java с именем TestngAnnotation.java в C: \> TestNG_WORKSPACE для проверки аннотаций.

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");
   }

}

Далее, давайте создадим файл 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 = "TestngAnnotation"/>
      </classes>
   </test>
</suite>

Скомпилируйте класс Test case, используя javac.

C:\TestNG_WORKSPACE>javac TestngAnnotation.java

Теперь запустите testng.xml, который запустит тестовый набор, определенный в предоставленном классе Test Case.

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

Проверьте вывод.

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
===============================================

На основании вышеприведенного вывода процедура выполнения выглядит следующим образом:

  • Прежде всего, метод beforeSuite () выполняется только один раз.

  • Наконец, метод afterSuite () выполняется только один раз.

  • Даже методы beforeTest (), beforeClass (), afterClass () и afterTest () выполняются только один раз.

  • Метод beforeMethod () выполняется для каждого тестового примера, но перед его выполнением.

  • Метод afterMethod () выполняется для каждого тестового примера, но после его выполнения.

  • Между beforeMethod () и afterMethod () выполняется каждый тестовый пример.

Прежде всего, метод beforeSuite () выполняется только один раз.

Наконец, метод afterSuite () выполняется только один раз.

Даже методы beforeTest (), beforeClass (), afterClass () и afterTest () выполняются только один раз.

Метод beforeMethod () выполняется для каждого тестового примера, но перед его выполнением.

Метод afterMethod () выполняется для каждого тестового примера, но после его выполнения.

Между beforeMethod () и afterMethod () выполняется каждый тестовый пример.

TestNG — Выполнение тестов

Тестовые случаи выполняются с использованием класса TestNG . Этот класс является основной точкой входа для запуска тестов в среде TestNG. Пользователи могут создавать свои собственные объекты TestNG и вызывать их различными способами, такими как —

  • На существующем testng.xml.

  • На синтетическом testng.xml, создан полностью из Java.

  • Путем прямой настройки тестовых классов.

На существующем testng.xml.

На синтетическом testng.xml, создан полностью из Java.

Путем прямой настройки тестовых классов.

Вы также можете определить, какие группы включать или исключать, назначать параметры и т. Д. Параметры командной строки:

  • -d outputdir: указать выходной каталог.

  • -testclass class_name: указывает одно или несколько имен классов.

  • -testjar jar_name: указывает банку с тестами.

  • ssrcedir src1; src2:; отдельный список исходных каталогов (используется только при использовании аннотаций javadoc).

  • -target

  • -группы

  • -testrunfactory

  • -listener

-d outputdir: указать выходной каталог.

-testclass class_name: указывает одно или несколько имен классов.

-testjar jar_name: указывает банку с тестами.

ssrcedir src1; src2:; отдельный список исходных каталогов (используется только при использовании аннотаций javadoc).

-target

-группы

-testrunfactory

-listener

Мы создадим объект TestNG существующий testng.xml в нашем примере ниже.

Создать класс

Создайте Java-класс для тестирования, скажем, MessageUtil.java в 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;
   }   
}  

Создать тестовый класс

  • Создайте тестовый класс Java, скажем, SampleTest.java .

  • Добавьте тестовый метод testPrintMessage () в ваш тестовый класс.

  • Добавьте аннотацию @Test в метод testPrintMessage ().

  • Реализуйте условие теста и проверьте условие с помощью API assertEquals TestNG.

Создайте тестовый класс Java, скажем, SampleTest.java .

Добавьте тестовый метод testPrintMessage () в ваш тестовый класс.

Добавьте аннотацию @Test в метод testPrintMessage ().

Реализуйте условие теста и проверьте условие с помощью API assertEquals TestNG.

Создайте файл класса Java с именем SampleTest.java в 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());
   }
}

Создать testng.xml

Далее, давайте создадим файл testng.xml в C: \> TestNG_WORKSPACE , чтобы выполнить тестовые сценарии . Этот файл захватывает все ваше тестирование в XML. Этот файл позволяет легко описать все ваши тестовые наборы и их параметры в одном файле, который вы можете проверить в своем хранилище кода или отправить по электронной почте коллегам. Это также упрощает извлечение подмножеств ваших тестов или разделение нескольких конфигураций времени выполнения (например, testngdatabase.xml будет запускать только те тесты, которые используют вашу базу данных).

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

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

Скомпилируйте контрольный пример, используя javac.

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

Теперь запустите testng.xml, который запустит тестовый набор, определенный в теге <test>.

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

Проверьте вывод.

Hello World

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

TestNG — Suite Test

Набор тестов — это набор тестовых примеров, предназначенных для тестирования поведения или набора поведений программ. В TestNG мы не можем определить комплект при тестировании исходного кода, но он представлен одним файлом XML, так как комплект является функцией выполнения. Это также позволяет выполнять гибкую настройку тестов . Набор может содержать один или несколько тестов и определяется тегом <suite>.

<suite> — корневой тег вашего testng.xml. Он описывает набор тестов, который, в свою очередь, состоит из нескольких разделов <test>.

В следующей таблице перечислены все допустимые атрибуты, которые принимает <suite>.

Sr.No. Атрибут и описание
1

название

Название этого люкса. Это обязательный атрибут.

2

подробный

Уровень или многословие для этого запуска.

3

параллельно

Должен ли TestNG запускать разные потоки для запуска этого пакета.

4

число потоков

Количество используемых потоков, если включен параллельный режим (в противном случае игнорируется).

5

аннотации

Тип аннотаций, которые вы используете в своих тестах.

6

тайм-аут

Тайм-аут по умолчанию, который будет использоваться во всех методах теста, найденных в этом тесте.

название

Название этого люкса. Это обязательный атрибут.

подробный

Уровень или многословие для этого запуска.

параллельно

Должен ли TestNG запускать разные потоки для запуска этого пакета.

число потоков

Количество используемых потоков, если включен параллельный режим (в противном случае игнорируется).

аннотации

Тип аннотаций, которые вы используете в своих тестах.

тайм-аут

Тайм-аут по умолчанию, который будет использоваться во всех методах теста, найденных в этом тесте.

В этой главе мы покажем вам пример с двумя тестовыми классами, Test1 и Test2, для совместной работы с использованием Test Suite.

Создать класс

Создайте Java-класс для тестирования, скажем, MessageUtil.java в 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;
   }
}

Создать классы теста

Создайте файл класса Java с именем Test1.java в 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());
   }
}

Создайте файл класса Java с именем Test2.java в 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());
   }
}

Теперь давайте напишем testng.xml в C: \> TestNG_WORKSPACE , который будет содержать тег <suite> следующим образом:

<?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 включает в себя exampletest1 и exampletest2 .

Скомпилируйте все классы Java, используя javac.

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

Теперь запустите testng.xml, который запустит тестовый набор, определенный в предоставленном классе Test Case.

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

Проверьте вывод.

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

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

Вы также можете проверить папку test-output . В папке Suite1 вы можете увидеть два созданных html-файла, exampletest1.html и exampletest2.html, которые будут выглядеть следующим образом:

Письменные тесты

Письменные тесты

TestNG — игнорировать тест

Иногда случается, что наш код не готов и тестовый пример, написанный для проверки этого метода / кода, не выполняется. В таких случаях аннотация @Test (enabled = false) помогает отключить этот тестовый пример.

Если метод теста помечен @Test (enabled = false) , то тестовый пример, который не готов к тестированию, игнорируется.

Теперь давайте посмотрим @Test (enabled = false) в действии.

Создать класс

Создайте Java-класс для тестирования, скажем, MessageUtil.java в 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;
   }   
}  

Создать тестовый класс

  • Создайте тестовый класс Java, скажем, IgnoreTest.java .

  • Добавьте методы тестирования testPrintMessage () и testSalutationMessage () в свой тестовый класс.

  • Добавьте аннотацию @Test (enabled = false) в метод testPrintMessage ().

Создайте тестовый класс Java, скажем, IgnoreTest.java .

Добавьте методы тестирования testPrintMessage () и testSalutationMessage () в свой тестовый класс.

Добавьте аннотацию @Test (enabled = false) в метод testPrintMessage ().

Создайте файл класса Java с именем IgnoreTest.java в 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());
   }
}

Создать 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 = "IgnoreTest" />
      </classes>
   </test>
</suite>	

Скомпилируйте MessageUtil и классы тестовых примеров, используя javac.

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

Теперь запустите testng.xml, который не будет запускать testPrintMessage () тестового примера, определенного в предоставленном классе Test Case.

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

Проверьте вывод. testPrintMessage () контрольный пример не проверен.

Inside testSalutationMessage()
Hi!Manisha

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

Вы также можете игнорировать группу тестов, которые будут обсуждаться в следующей главе.

TestNG — Групповой тест

Групповое тестирование — это новая инновационная функция в TestNG, которой нет в среде JUnit. Это позволяет вам распределять методы по частям и выполнять сложные группировки методов тестирования.

Вы можете не только объявить те методы, которые принадлежат группам, но вы также можете указать группы, которые содержат другие группы. Затем можно вызвать TestNG и попросить включить определенный набор групп (или регулярные выражения), исключая при этом другой набор.

Групповые тесты обеспечивают максимальную гибкость в том, как вы разбиваете свои тесты, и не требуют от вас перекомпиляции чего-либо, если вы хотите запустить два разных набора тестов вплотную.

Группы указываются в файле testng.xml с помощью тега <groups>. Его можно найти в теге <test> или <suite>. Группы, указанные в теге <suite>, применяются ко всем тегам <test> ниже.

Теперь давайте рассмотрим пример того, как работает групповое тестирование.

Создать класс

Создайте Java-класс для тестирования, скажем, MessageUtil.java в 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;
   }
}

Создать тестовый класс

  • Создайте тестовый класс Java, скажем, GroupTestExample.java.

  • Добавьте тестовые методы testPrintMessage () и testSalutationMessage () в ваш тестовый класс.

  • Сгруппируйте метод испытаний по двум категориям —

    • Проверка тестов (checkintest) — эти тесты должны быть запущены перед отправкой нового кода. Как правило, они должны быть быстрыми и просто убедиться, что основные функции не нарушены.

    • Функциональные тесты (functest). Эти тесты должны охватывать все функциональные возможности вашего программного обеспечения и выполняться не реже одного раза в день, хотя в идеале вы хотели бы запускать их непрерывно.

Создайте тестовый класс Java, скажем, GroupTestExample.java.

Добавьте тестовые методы testPrintMessage () и testSalutationMessage () в ваш тестовый класс.

Сгруппируйте метод испытаний по двум категориям —

Проверка тестов (checkintest) — эти тесты должны быть запущены перед отправкой нового кода. Как правило, они должны быть быстрыми и просто убедиться, что основные функции не нарушены.

Функциональные тесты (functest). Эти тесты должны охватывать все функциональные возможности вашего программного обеспечения и выполняться не реже одного раза в день, хотя в идеале вы хотели бы запускать их непрерывно.

Создайте файл класса Java с именем GroupTestExample.java в 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());
   }  
}

Создать testng.xml

Создайте testng.xml в C: \> TestNG_WORKSPACE , чтобы выполнить тестовые наборы . Здесь мы будем выполнять только те тесты, которые относятся к группе 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>

Скомпилируйте классы MessageUtil, Test case, используя javac.

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

Теперь запустите testng.xml, который запустит только метод testPrintMessage (), так как он принадлежит группе functest .

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

Проверьте вывод. Только метод testPrintMessage () выполняется.

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

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

Группа групп

Группы могут также включать другие группы. Эти группы называются метагруппами . Например, вы можете определить группу, включающую checkintest и functest . Давайте изменим наш файл testng.xml следующим образом:

<?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>

Выполнение вышеупомянутого testng.xml выполнит все три теста и даст вам следующий результат —

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

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

Группы исключения

Вы можете игнорировать группу, используя тег <exclude>, как показано ниже —

<?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 — Исключительный тест

TestNG предоставляет возможность отслеживания обработки исключений кода. Вы можете проверить, вызывает ли код желаемое исключение или нет. Здесь параметр Ожидаемые исключения используется вместе с аннотацией @Test. Теперь давайте посмотрим @Test (Ожидаемые исключения) в действии.

Создать класс

Создайте Java-класс для тестирования, скажем, MessageUtil.java в C: \> TestNG_WORKSPACE . Добавьте условие ошибки в метод 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;
   }   
}  	

Создать тестовый класс

  • Создайте тестовый класс Java, скажем, ExpectedExceptionTest.java .

  • Добавьте ожидаемое исключение ArithmeticException в тестовый пример testPrintMessage ().

Создайте тестовый класс Java, скажем, ExpectedExceptionTest.java .

Добавьте ожидаемое исключение ArithmeticException в тестовый пример testPrintMessage ().

Создайте файл класса Java с именем ExpectedExceptionTest.java в 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());
   }
}

Создать тестовый бегун

Создайте 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 = "ExpectedExceptionTest" />
      </classes>
   </test>
</suite>	

Скомпилируйте классы MessageUtil, Test case, используя javac.

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

Теперь запустите Test Runner, который будет запускать тестовые наборы, определенные в предоставленном классе Test Case.

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

Проверьте вывод. testPrintMessage () контрольный пример будет пройден.

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

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

TestNG — тест зависимостей

Иногда вам может потребоваться вызвать методы в тестовом примере в определенном порядке, или вы можете разделить некоторые данные и состояния между методами. Этот вид зависимостей поддерживается TestNG, так как он поддерживает объявление явных зависимостей между методами тестирования.

TestNG позволяет указывать зависимости либо с помощью —

  • Использование атрибутов depennoSnMethods в аннотациях @Test, ИЛИ.

  • Использование атрибутов depennoSnGroups в аннотациях @Test.

Использование атрибутов depennoSnMethods в аннотациях @Test, ИЛИ.

Использование атрибутов depennoSnGroups в аннотациях @Test.

Пример использования зависимости от методы

Создать класс

Создайте Java-класс для тестирования, скажем, MessageUtil.java в 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;
   }
}

Создать тестовый класс

  • Создайте тестовый класс Java, скажем, DependencyTestUsingAnnotation.java.

  • Добавьте тестовые методы testPrintMessage () и testSalutationMessage () и initEnvironmentTest () в ваш тестовый класс.

  • Добавьте атрибут depenOnMethods = {«initEnvironmentTest»} в аннотацию @Test метода testSalutationMessage () .

Создайте тестовый класс Java, скажем, DependencyTestUsingAnnotation.java.

Добавьте тестовые методы testPrintMessage () и testSalutationMessage () и initEnvironmentTest () в ваш тестовый класс.

Добавьте атрибут depenOnMethods = {«initEnvironmentTest»} в аннотацию @Test метода testSalutationMessage () .

Создайте имя файла Java-класса DependencyTestUsingAnnotation.java в 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");
   }
}

Создать 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 = "DependencyTestUsingAnnotation" />
      </classes>
   </test>
</suite>

Скомпилируйте классы MessageUtil, Test case, используя javac.

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

Теперь запустите testng.xml, который запустит метод testSalutationMessage () только после выполнения метода initEnvironmentTest ().

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

Проверьте вывод.

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

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

Пример использования depenOnGroups

Вы также можете иметь методы, которые зависят от целых групп. Давайте иметь пример, чтобы продемонстрировать это.

Создать класс

Создайте Java-класс для тестирования, скажем, MessageUtil.java в 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;
   }
}

Создать тестовый класс

  • Создайте тестовый класс Java, скажем, DependencyTestUsingAnnotation.java.

  • Добавьте тестовые методы testPrintMessage () testSalutationMessage () и initEnvironmentTest () в ваш тестовый класс и добавьте их в группу «init».

  • Добавьте атрибут variableOnMethods = {«init. *»} В аннотацию @Test метода testSalutationMessage () .

Создайте тестовый класс Java, скажем, DependencyTestUsingAnnotation.java.

Добавьте тестовые методы testPrintMessage () testSalutationMessage () и initEnvironmentTest () в ваш тестовый класс и добавьте их в группу «init».

Добавьте атрибут variableOnMethods = {«init. *»} В аннотацию @Test метода testSalutationMessage () .

Создайте файл Java-класса с именем DependencyTestUsingAnnotation.java в 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");
   }
}

В этом примере testSalutationMessage () объявляется как зависящий от любой группы, соответствующий регулярному выражению «init. *», Что гарантирует, что методы testPrintMessage () и initEnvironmentTest () всегда будут вызываться перед testSalutationMessage ().

Если метод зависел от сбоев, и у вас есть жесткая зависимость от него (AlwaysRun = false, который используется по умолчанию), методы, которые зависят от него, помечаются не как FAIL, а как SKIP. Пропущенные методы будут указаны как таковые в окончательном отчете (цветом, который не является ни красным, ни зеленым в HTML), что важно, поскольку пропущенные методы не обязательно являются сбоями.

Создать 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 = "DependencyTestUsingAnnotation" />
      </classes>
   </test>
</suite>

Скомпилируйте классы MessageUtil, Test case, используя javac.

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

Теперь запустите testng.xml, который запустит метод testSalutationMessage () только после выполнения метода initEnvironmentTest () .

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

Проверьте вывод.

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

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

зависящие от группы против зависимых методов

  • При использовании групп мы больше не сталкиваемся с проблемами рефакторинга. До тех пор, пока мы не изменим атрибуты depenOnGroups или groups, наши тесты будут продолжаться с правильной настройкой зависимостей.

  • Всякий раз, когда необходимо добавить новый метод в граф зависимостей, все, что нам нужно сделать, это поместить его в нужную группу и убедиться, что он зависит от правильной группы. Нам не нужно изменять любой другой метод.

При использовании групп мы больше не сталкиваемся с проблемами рефакторинга. До тех пор, пока мы не изменим атрибуты depenOnGroups или groups, наши тесты будут продолжаться с правильной настройкой зависимостей.

Всякий раз, когда необходимо добавить новый метод в граф зависимостей, все, что нам нужно сделать, это поместить его в нужную группу и убедиться, что он зависит от правильной группы. Нам не нужно изменять любой другой метод.

TestNG — Параметризованный тест

Еще одна интересная функция, доступная в TestNG, — это параметрическое тестирование . В большинстве случаев вы сталкиваетесь со сценарием, в котором бизнес-логика требует огромного количества тестов. Параметризованные тесты позволяют разработчикам запускать один и тот же тест снова и снова, используя разные значения.

TestNG позволяет передавать параметры напрямую в методы тестирования двумя различными способами:

  • С testng.xml
  • С поставщиками данных

Передача параметров с testng.xml

С помощью этого метода вы определяете простые параметры в файле testng.xml, а затем ссылаетесь на эти параметры в исходных файлах. Давайте продемонстрируем, как использовать эту технику для передачи параметров.

Создать тестовый класс

  • Создайте тестовый класс Java, скажем, ParameterizedTest1.java.

  • Добавьте тестовый метод parameterTest () в ваш тестовый класс. Этот метод принимает строку в качестве входного параметра.

  • Добавьте аннотацию @Parameters («myName») к этому методу. Параметру будет передано значение из testng.xml, которое мы увидим на следующем шаге.

Создайте тестовый класс Java, скажем, ParameterizedTest1.java.

Добавьте тестовый метод parameterTest () в ваш тестовый класс. Этот метод принимает строку в качестве входного параметра.

Добавьте аннотацию @Parameters («myName») к этому методу. Параметру будет передано значение из testng.xml, которое мы увидим на следующем шаге.

Создайте файл класса Java с именем ParameterizedTest1.java в 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);
   }
}

Создать 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">
   
      <parameter name = "myName" value="manisha"/> 
      
      <classes>
         <class name = "ParameterizedTest1" />
      </classes>
      
   </test>
</suite>

Мы также можем определить параметры на уровне <suite>. Предположим, мы определили myName на уровнях <suite> и <test>. В таких случаях применяются обычные правила определения объема. Это означает, что любой класс внутри тега <test> увидит значение параметра, определенного в <test>, а классы в остальной части файла testng.xml увидят значение, определенное в <suite>.

Скомпилируйте класс тестового примера, используя javac.

C:\TestNG_WORKSPACE>javac ParameterizedTest1.java

Теперь запустите testng.xml, который запустит метод parameterTest . TestNG сначала попытается найти параметр с именем myName в теге <test>, а затем, если он не может его найти, он ищет в теге <suit>, который его заключает.

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

Проверьте вывод.

Parameterized value is : manisha

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

TestNG автоматически попытается преобразовать значение, указанное в testng.xml, в тип вашего параметра. Вот поддерживаемые типы —

  • строка
  • INT / Integer
  • булево / Boolean
  • Байт / Байт
  • символ / символов
  • двухместный / Double
  • Поплавок / Float
  • долго долго
  • короткий / Short

Передача параметров с поставщиками данных

Когда вам нужно передать сложные параметры или параметры, которые необходимо создать из Java (сложные объекты, объекты, считанные из файла свойств или базы данных и т. Д.), Параметры можно передать с помощью поставщиков данных.

Поставщик данных — это метод, аннотированный @DataProvider . Эта аннотация имеет только один строковый атрибут: его имя. Если имя не указано, имя поставщика данных по умолчанию автоматически соответствует имени метода. Поставщик данных возвращает массив объектов.

Следующие примеры демонстрируют, как использовать поставщиков данных. Первый пример о том, что @DataProvider использует Vector, String или Integer в качестве параметра, а второй пример о том, что @DataProvider использует объект в качестве параметра.

Пример 1

Здесь @DataProvider передает Integer и Boolean в качестве параметра.

Создать класс Java

Создайте класс Java с именем PrimeNumberChecker.java. Этот класс проверяет, является ли число простым. Создайте этот класс в C: \> 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;
   }
}

Создать тестовый класс

  • Создайте тестовый класс Java, скажем, ParamTestWithDataProvider1.java.

  • Определите метод primeNumbers (), который определяется как поставщик данных с использованием аннотации. Этот метод возвращает массив объектов.

  • Добавьте тестовый метод testPrimeNumberChecker () в ваш тестовый класс. Этот метод принимает Integer и Boolean в качестве входных параметров. Этот метод проверяет, является ли переданный параметр простым числом.

  • Добавьте аннотацию @Test (dataProvider = «test1») к этому методу. Атрибут dataProvider сопоставлен с «test1».

Создайте тестовый класс Java, скажем, ParamTestWithDataProvider1.java.

Определите метод primeNumbers (), который определяется как поставщик данных с использованием аннотации. Этот метод возвращает массив объектов.

Добавьте тестовый метод testPrimeNumberChecker () в ваш тестовый класс. Этот метод принимает Integer и Boolean в качестве входных параметров. Этот метод проверяет, является ли переданный параметр простым числом.

Добавьте аннотацию @Test (dataProvider = «test1») к этому методу. Атрибут dataProvider сопоставлен с «test1».

Создайте файл класса java с именем ParamTestWithDataProvider1.java в 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));
   }
}

Создать 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 = "ParamTestWithDataProvider1" />
      </classes>
   </test>
</suite>

Скомпилируйте класс Test case, используя javac.

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

Теперь запустите testng.xml.

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

Проверьте вывод.

   2 true
   6 false
   19 true
   22 false
   23 true

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

Пример 2

Здесь @DataProvider передает объект в качестве параметра.

Создать класс Java

Создайте Java-класс Bean.java, который представляет собой простой объект с методами get / set, в 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;
   }
}

Создать тестовый класс

  • Создайте тестовый класс Java, скажем, ParamTestWithDataProvider2.java.

  • Определите метод primeNumbers (), который определяется как поставщик данных с помощью аннотации. Этот метод возвращает массив объекта.

  • Добавьте тестовый метод testMethod () в ваш тестовый класс. Этот метод принимает объектный компонент в качестве параметра.

  • Добавьте аннотацию @Test (dataProvider = «test1») к этому методу. Атрибут dataProvider сопоставлен с «test1».

Создайте тестовый класс Java, скажем, ParamTestWithDataProvider2.java.

Определите метод primeNumbers (), который определяется как поставщик данных с помощью аннотации. Этот метод возвращает массив объекта.

Добавьте тестовый метод testMethod () в ваш тестовый класс. Этот метод принимает объектный компонент в качестве параметра.

Добавьте аннотацию @Test (dataProvider = «test1») к этому методу. Атрибут dataProvider сопоставлен с «test1».

Создайте файл класса java с именем ParamTestWithDataProvider2.java в 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());
   }
}

Создать 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 = "ParamTestWithDataProvider2" />
      </classes>
   </test>
</suite>

Скомпилируйте класс тестового примера, используя javac.

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

Теперь запустите testng.xml.

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

Проверьте вывод.

   hi I am the bean 111

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

TestNG — запускать тесты Junit

Теперь, когда вы поняли TestNG и его различные тесты, вы уже должны быть обеспокоены тем, как реорганизовать существующий код JUnit. Не нужно беспокоиться, так как TestNG предоставляет возможность перейти от JUnit к TestNG в своем собственном темпе. Вы можете выполнить свои существующие тестовые случаи JUnit, используя TestNG.

TestNG может автоматически распознавать и запускать тесты JUnit, так что вы можете использовать TestNG в качестве бегуна для всех существующих тестов и писать новые тесты с помощью TestNG. Все, что вам нужно сделать, это поместить библиотеку JUnit в путь к классам TestNG, чтобы она могла находить и использовать классы JUnit, переключать тестовый исполнитель с JUnit на TestNG в Ant, а затем запускать TestNG в «смешанном» режиме. Таким образом, вы можете иметь все свои тесты в одном проекте, даже в одном пакете, и начать использовать TestNG. Этот подход также позволяет постепенно преобразовывать существующие тесты JUnit в TestNG.

Давайте приведем пример, демонстрирующий эту удивительную способность TestNG.

Создать класс тестового примера JUnit

Создайте Java-класс, который является тестовым классом JUnit, TestJunit.java в 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);
   }
}

Теперь давайте напишем testng.xml в C: \> TestNG_WORKSPACE , который будет содержать тег <suite> следующим образом:

<?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>
  	

Чтобы выполнить тестовые случаи JUnit, определите свойство junit = «true», как в приведенном выше xml. Класс теста JUnit TestJunit определен в имени класса.

Для JUnit 4 TestNG будет использовать бегунок org.junit.runner.JUnitCore для запуска ваших тестов.

Скомпилируйте все классы Java, используя javac.

C:\TestNG_WORKSPACE>javac TestJunit.java

Теперь запустите testng.xml, который запустит тестовый пример JUnit как TestNG.

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

Здесь мы поместили файл junit-4.11.jar в папку C: \ TestNG_WORKSPACE \ lib \ junit-4.11.jar.

Проверьте вывод.

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

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

TestNG — Результаты испытаний

Отчетность является наиболее важной частью любого выполнения теста, поскольку она помогает пользователю понять результат выполнения теста, точку сбоя и причины сбоя. Ведение журнала, с другой стороны, важно для отслеживания потока выполнения или для отладки в случае каких-либо сбоев.

TestNG по умолчанию создает отчет другого типа для выполнения теста. Это включает вывод в формате HTML и XML. TestNG также позволяет своим пользователям писать свой собственный репортер и использовать его вместе с TestNG. Существует также возможность написать свои собственные регистраторы, которые уведомляются во время выполнения TestNG.

Существует два способа создания отчета с TestNG —

  • Слушатели. Для реализации класса слушателя класс должен реализовать интерфейс org.testng.ITestListener . Эти классы уведомляются TestNG во время выполнения, когда тест начинается, заканчивается, заканчивается неудачей, пропускается или проходит.

  • Репортеры. Для реализации класса отчетности класс должен реализовывать интерфейс org.testng.IReporter . Эти классы вызываются, когда заканчивается весь набор. Объект, содержащий информацию всего теста, передается в этот класс при вызове.

Слушатели. Для реализации класса слушателя класс должен реализовать интерфейс org.testng.ITestListener . Эти классы уведомляются TestNG во время выполнения, когда тест начинается, заканчивается, заканчивается неудачей, пропускается или проходит.

Репортеры. Для реализации класса отчетности класс должен реализовывать интерфейс org.testng.IReporter . Эти классы вызываются, когда заканчивается весь набор. Объект, содержащий информацию всего теста, передается в этот класс при вызове.

В этой главе у нас будет четыре разных примера, чтобы продемонстрировать четыре разных случая отчетности и ведения журнала.

Sr.No. Случай и пример
1 Пользовательская регистрация

Этот пример иллюстрирует, как написать свой собственный регистратор.

2 Custom Reporter

Этот пример иллюстрирует, как написать свой собственный репортер.

3 HTML и XML отчет

Этот пример иллюстрирует отчет HTML и XML по умолчанию, сгенерированный TestNG.

4 JUnit Отчеты

В этом примере показано, как создавать отчеты JUnit из отчетов TestNG.

Этот пример иллюстрирует, как написать свой собственный регистратор.

Этот пример иллюстрирует, как написать свой собственный репортер.

Этот пример иллюстрирует отчет HTML и XML по умолчанию, сгенерированный TestNG.

В этом примере показано, как создавать отчеты JUnit из отчетов TestNG.

TestNG — подключи с помощью ANT

В этой главе мы продемонстрируем, как запустить TestNG с использованием ANT. Давайте следовать шагам, данным ниже —

Шаг 1: Загрузите Apache Ant

Загрузите последнюю версию Apache Ant

Операционные системы Название архива
Windows apache-ant-1.8.4-bin.zip
Linux апач-муравей-1.8.4-bin.tar.gz
макинтош апач-муравей-1.8.4-bin.tar.gz

Шаг 2: Установите среду Ant

Задайте переменную среды ANT_HOME, чтобы она указывала на местоположение базовой директории, где на вашем компьютере хранятся библиотеки ANT. Давайте предположим, что мы сохранили библиотеки Ant в папке apache-ant-1.8.4.

Операционные системы Выход
Windows Установите переменную среды ANT_HOME в C: \ Program Files \ Apache Software Foundation \ apache-ant-1.8.4
Linux Export ANT_HOME = / usr / local / apache-ant-1.8.4
макинтош Экспортировать ANT_HOME = / Библиотека / apache-ant-1.8.4

Добавьте расположение компилятора Ant в System Path следующим образом:

Операционные системы Описание
Windows Добавьте строку% ANT_HOME \ bin в конце системной переменной Path.
Linux Экспорт PATH = $ PATH: $ ANT_HOME / bin /
макинтош Не требуется.

Шаг 3: Загрузить архив TestNG

Загрузите необходимые файлы jar http://www.testng.org.

Операционные системы Название архива
Windows TestNG-6.8.jar
Linux TestNG-6.8.jar
макинтош TestNG-6.8.jar

Шаг 4: Создать структуру проекта

  • Создайте папку TestNGWithAnt в C: \> TestNG_WORKSPACE .

  • Создайте папку src в C: \> TestNG_WORKSPACE> TestNGWithAnt .

  • Создайте папку test в C: \> TestNG_WORKSPACE> TestNGWithAnt .

  • Создайте папку lib в C: \> TestNG_WORKSPACE> TestNGWithAnt .

  • Создайте класс MessageUtil в папке C: \> TestNG_WORKSPACE> TestNGWithAnt> src .

Создайте папку TestNGWithAnt в C: \> TestNG_WORKSPACE .

Создайте папку src в C: \> TestNG_WORKSPACE> TestNGWithAnt .

Создайте папку test в C: \> TestNG_WORKSPACE> TestNGWithAnt .

Создайте папку lib в C: \> TestNG_WORKSPACE> TestNGWithAnt .

Создайте класс MessageUtil в папке C: \> TestNG_WORKSPACE> TestNGWithAnt> src .

/*
* 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;
   }   
}  	
  • Создайте класс TestMessageUtil в папке C: \> TestNG_WORKSPACE> TestNGWithAnt> src .

Создайте класс TestMessageUtil в папке C: \> TestNG_WORKSPACE> TestNGWithAnt> src .

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());
   }
}
  • Скопируйте testng-6.8.jar в папку C: \> TestNG_WORKSPACE> TestNGWithAnt> lib .

Скопируйте testng-6.8.jar в папку C: \> TestNG_WORKSPACE> TestNGWithAnt> lib .

Создать ANT build.xml

Во-первых, нам нужно определить задачу TestNG Ant следующим образом:

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

Затем мы будем использовать задачу <testng> в Ant для выполнения наших тестовых случаев TestNG.

Файл build.xml выглядит следующим образом:

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

Запустите следующую команду Ant.

C:\TestNG_WORKSPACE\TestNGWithAnt>ant

Проверьте вывод.

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

TestNG — подключи с затмением

Чтобы настроить TestNG с Eclipse, выполните следующие действия:

Шаг 1: Скачать архив TestNG

Загрузите последнюю версию файла jar TestNG с http://www.testng.org

Операционные системы Название архива
Windows TestNG-6.8.jar
Linux TestNG-6.8.jar
макинтош TestNG-6.8.jar

Мы предполагаем, что вы скопировали указанный выше JAR-файл в папку C: \> TestNG.

Шаг 2: Установите среду Eclipse

  • Откройте eclipse → щелкните правой кнопкой мыши проект и перейдите к свойству → Build Path → Configure Build Path и добавьте testng-6.8.jar в библиотеки, используя кнопку Add External Jar .

Откройте eclipse → щелкните правой кнопкой мыши проект и перейдите к свойству → Build Path → Configure Build Path и добавьте testng-6.8.jar в библиотеки, используя кнопку Add External Jar .

Добавьте testng-6.8.jar в библиотеки.

  • Мы предполагаем, что ваш Eclipse имеет встроенный плагин TestNG; если он недоступен, пожалуйста, получите последнюю версию на сайте обновлений.

    • В Eclipse IDE выберите Справка / Обновления программного обеспечения / Найти и установить .

    • Поиск новых функций для установки.

    • Новый удаленный сайт.

    • Для Eclipse 3.4 и выше введите http://beust.com/eclipse .

    • Для Eclipse 3.3 и ниже введите http://beust.com/eclipse1 .

    • Убедитесь, что флажок рядом с URL-адрес установлен и нажмите кнопку Далее .

    • Затем Eclipse проведет вас через весь процесс.

Мы предполагаем, что ваш Eclipse имеет встроенный плагин TestNG; если он недоступен, пожалуйста, получите последнюю версию на сайте обновлений.

В Eclipse IDE выберите Справка / Обновления программного обеспечения / Найти и установить .

Поиск новых функций для установки.

Новый удаленный сайт.

Для Eclipse 3.4 и выше введите http://beust.com/eclipse .

Для Eclipse 3.3 и ниже введите http://beust.com/eclipse1 .

Убедитесь, что флажок рядом с URL-адрес установлен и нажмите кнопку Далее .

Затем Eclipse проведет вас через весь процесс.

Теперь ваш Eclipse готов к разработке тестовых случаев TestNG.

Шаг 3: Проверьте установку TestNG в Eclipse

  • Создайте проект TestNGProject в Eclipse в любом месте.

  • Создайте класс MessageUtil для тестирования в проекте.

Создайте проект TestNGProject в Eclipse в любом месте.

Создайте класс MessageUtil для тестирования в проекте.

/*
* 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;
   }   
} 
  • Создайте тестовый класс TestNGExample в проекте.

Создайте тестовый класс TestNGExample в проекте.

   
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());
   }
}

Структура проекта должна быть следующей —

Структура проекта

Наконец, проверьте вывод программы, щелкнув правой кнопкой мыши по программе и запустив ее под именем TestNG.

Проверьте результат.