TestNG - Escrevendo testes
Escrever um teste em TestNG envolve basicamente as seguintes etapas -
Escreva a lógica de negócios de seu teste e insira anotações TestNG em seu código.
Adicione as informações sobre o seu teste (por exemplo, o nome da classe, os grupos que deseja executar, etc.) em um arquivo testng.xml ou em build.xml.
Execute TestNG.
Aqui, veremos um exemplo completo de teste TestNG usando a classe POJO, classe de lógica de negócios e um xml de teste, que será executado pelo TestNG.
Crio EmployeeDetails.java dentro C:\>TestNG_WORKSPACE, que é uma classe 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 classe é usada para -
- obter / definir o valor do nome do funcionário.
- obter / definir o valor do salário mensal do funcionário.
- obter / definir o valor da idade do funcionário.
Criar um EmpBusinessLogic.java dentro C:\>TestNG_WORKSPACE, que contém a lógica de negócios.
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 classe é usada para calcular -
- o salário anual do empregado.
- o valor de avaliação do empregado.
Agora, vamos criar uma classe TestNG chamada TestEmployeeDetails.javaem C: \> TestNG_WORKSPACE. Uma classe TestNG é uma classe Java que contém pelo menos uma anotação TestNG. Esta classe contém casos de teste a serem testados. Um teste TestNG pode ser configurado pelas anotações @BeforeXXX e @AfterXXX (veremos isso no capítulo TestNG - Procedimento de Execução ), o que permite realizar alguma lógica Java antes e depois de um determinado ponto.
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 classe é usada para testar os métodos de EmpBusinessLogicclasse. Ele faz o seguinte -
Testa o salário anual do funcionário.
Testa o valor da avaliação do funcionário.
Antes de poder executar os testes, você deve configurar TestNG usando um arquivo XML especial, convencionalmente denominado testng.xml. A sintaxe para este arquivo é muito simples e seu conteúdo é mostrado abaixo. Crie este arquivo emC:\>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>
Os detalhes do arquivo acima são os seguintes -
Um conjunto é representado por um arquivo XML. Ele pode conter um ou mais testes e é definido pela tag <suite>.
A tag <test> representa um teste e pode conter uma ou mais classes TestNG.
A tag <class> representa uma classe TestNG. É uma classe Java que contém pelo menos uma anotação TestNG. Ele pode conter um ou mais métodos de teste.
Compile as classes de caso de teste usando javac.
C:\TestNG_WORKSPACE>javac EmployeeDetails.java EmpBusinessLogic.java TestEmployeeDetails.java
Agora, TestNG com o seguinte comando -
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Se tudo tiver sido feito corretamente, você deverá ver os resultados dos seus testes no console. Além disso, TestNG cria um relatório HTML muito bom em uma pasta chamadatest-outputque é criado automaticamente no diretório atual. Se você abri-lo e carregar index.html, verá uma página semelhante à da imagem abaixo -