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 -