2017-09-25 5 views
2

Voici mon fichier XML et ma classe de démonstration. La méthode Precondition() sera exécutée avant la méthode demo1() et la méthode postCondition() sera exécutée après la méthode demo1(). Le même processus est pour demo2(). Mais quand j'exécute le code, les méthodes BeforeSuite et BeforeTest ne sont pas appelées. Pourquoi.? Comment les appeler?@Before Suite et les méthodes @BeforeTest ne sont pas appelées si les groupes sont exécutés dans TestNG

Output :   
Before Method is executing              
DEMO -1 
After Method is executing 
Before Method is executing 
DEMO 2 
After Method is executing 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Suite"> 
    <test name="Test"> 
     <groups> 
      <run> 
       <include name = "Hey"></include> 
      </run> 
     </groups> 
     <classes> 
      <class name="practicepackage.Demo"/> 
     </classes> 
    </test> <!-- Test --> 
</suite> <!-- Suite --> 
package practicepackage; 

import org.testng.annotations.AfterMethod; 
import org.testng.annotations.BeforeMethod; 
import org.testng.annotations.BeforeSuite; 
import org.testng.annotations.BeforeTest; 
import org.testng.annotations.Test; 

public class Demo { 

    @BeforeSuite 
    public void beforeSuite(){ 
     System.out.println("Before Suite method is being launched"); 
    } 

    @BeforeTest 
    public void beforeTest(){ 
     System.out.println("Before Test Method is being luanched"); 
    } 

    @BeforeMethod(groups = {"Hey"}) 
    public void PreCondition(){ 
     System.out.println("Before Method is executing"); 
    } 

    @Test (groups = {"Hey"}) 
    public void demo1(){ 
     System.out.println("DEMO -1 "); 
    } 

    @Test(groups = {"Hey"}) 
    public void demo2(){ 
     System.out.println("DEMO 2"); 
    } 

    @AfterMethod(groups = {"Hey"}) 
    public void postCondition(){ 
     System.out.println("After Method is executing"); 
    } 
} 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Suite"> 
    <test name="Test"> 
     <groups> 
      <run> 
       <include name = "Hey"></include> 
      </run> 
     </groups> 
     <classes> 
      <class name="practicepackage.Demo"/> 
     </classes> 
    </test> <!-- Test --> 
</suite> <!-- Suite --> 

Répondre

2

Afin d'assurer que @BeforeSuite et @BeforeTest sont exécutées tout le temps, s'il vous plaît activer l'attribut alwaysRun=true pour ces annotations.

Ceci est nécessaire car lorsque vous exécutez des groupes, ces méthodes de configuration ne sont pas sélectionnées par TestNG avant et à moins qu'elles ne fassent partie du groupe que vous avez sélectionné.

La sélection de groupe dans TestNG peut être visualisée comme une sorte de mécanisme de filtrage dans TestNG qui vous permet de dire à TestNG les critères de filtrage, lorsqu'il décide quels tests exécuter.

+0

Nous vous remercions de votre aide. @Krishnan. Cela m'a aidé beaucoup – naqash

+0

S'il vous plaît accepter ma réponse si elle a aidé à répondre à votre question. –

+0

merci, à la recherche de ceci –