2009-10-13 7 views
2

Pour mes tests, je suis en utilisant une classe de base MyTestBase définissant une méthode setup() qui fait quelques préparations de base:testng, l'annotation « beforeTestMethod » et passer outre

public class MyTestBase { 
    @Configuration(beforeTestMethod=true) 
    protected void setup() { 
     // do base preparations 
    } 
} 

Maintenant, j'ai quelques classes de tests plus spécifiques qui doivent faire leurs propres préparations. Il existe différentes façons de mettre en œuvre cela.

Je pourrais utiliser @Override:

public class MySpecialTestBase extends MyTestBase { 
    @Override 
    protected void setup() { 
     super.setup(); 
     // do additional preparations 
    } 
} 

... ou je pourrais utiliser une méthode d'installation séparée:

public class MySpecialTestBase extends MyTestBase { 
    @Configuration(beforeTestMethod=true) 
    protected void setupSpecial() { 
     // do additional preparations 
    } 
} 

Est-il possible de mettre en œuvre cette preferred?

Répondre

5

Je préférerais utiliser l'annotation @Configuration. @Override et super sont plus fragiles. Vous pouvez oublier d'appeler super.setup(), ou l'appeler au mauvais endroit. Pendant ce temps, en utilisant une méthode séparée avec @Configuration vous permet de choisir un nom plus approprié pour la méthode d'installation de l'enfant si nécessaire, et vous obtenez l'ordre d'installation garanti par TestNG (parent puis enfant).

Deux autres points:

  1. Je fais configuration parent final afin d'interdire. Accidentelle prioritaire Je voudrais utiliser les annotations @BeforeMethod. Ils sont disponibles depuis TestNG 5.0. Bien sûr, pour les versions plus anciennes, vous avez dû utiliser @Configuration.
+0

Merci pour votre réponse. – tangens

Questions connexes