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, вы увидите страницу, похожую на ту, что на изображении ниже -