TestNG - Rédaction de tests

L'écriture d'un test dans TestNG implique essentiellement les étapes suivantes -

  • Écrivez la logique métier de votre test et insérez des annotations TestNG dans votre code.

  • Ajoutez les informations sur votre test (par exemple le nom de la classe, les groupes que vous souhaitez exécuter, etc.) dans un fichier testng.xml ou dans build.xml.

  • Exécutez TestNG.

Ici, nous verrons un exemple complet de test TestNG utilisant la classe POJO, la classe de logique métier et un test xml, qui sera exécuté par TestNG.

Créer EmployeeDetails.java dans C:\>TestNG_WORKSPACE, qui est une 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 la classe est utilisée pour -

  • obtenir / définir la valeur du nom de l'employé.
  • obtenir / définir la valeur du salaire mensuel de l'employé.
  • obtenir / définir la valeur de l'âge de l'employé.

Créé un EmpBusinessLogic.java dans C:\>TestNG_WORKSPACE, qui contient la logique métier.

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 la classe est utilisée pour calculer -

  • le salaire annuel de l'employé.
  • le montant de l'évaluation de l'employé.

Maintenant, créons une classe TestNG appelée TestEmployeeDetails.javadans C: \> TestNG_WORKSPACE. Une classe TestNG est une classe Java qui contient au moins une annotation TestNG. Cette classe contient des cas de test à tester. Un test TestNG peut être configuré par les annotations @BeforeXXX et @AfterXXX (nous le verrons dans le chapitre TestNG - Procédure d'exécution ), ce qui permet d'exécuter une logique Java avant et après un certain point.

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 class est utilisé pour tester les méthodes de EmpBusinessLogicclasse. Il fait ce qui suit -

  • Teste le salaire annuel de l'employé.

  • Teste le montant de l'évaluation de l'employé.

Avant de pouvoir exécuter les tests, vous devez configurer TestNG à l'aide d'un fichier XML spécial, appelé conventionnellement testng.xml. La syntaxe de ce fichier est très simple et son contenu est présenté ci-dessous. Créez ce fichier dansC:\>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>

Les détails du fichier ci-dessus sont les suivants -

  • Une suite est représentée par un fichier XML. Il peut contenir un ou plusieurs tests et est défini par la balise <suite>.

  • La balise <test> représente un test et peut contenir une ou plusieurs classes TestNG.

  • La balise <class> représente une classe TestNG. C'est une classe Java qui contient au moins une annotation TestNG. Il peut contenir une ou plusieurs méthodes de test.

Compilez les classes de cas de test à l'aide de javac.

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

Maintenant TestNG avec la commande suivante -

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

Si tout a été fait correctement, vous devriez voir les résultats de vos tests dans la console. De plus, TestNG crée un très joli rapport HTML dans un dossier appelétest-outputqui est automatiquement créé dans le répertoire courant. Si vous l'ouvrez et chargez index.html, vous verrez une page similaire à celle de l'image ci-dessous -