Question

Pour mes tests, je suis sur un MyTestBase de classe de base définissant une setup() méthode qui fait des préparations de base:

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

Maintenant, j'ai des classes de test plus spécifiques qui doivent faire leurs propres préparatifs. Il existe différentes façons comment mettre en œuvre.

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?

Était-ce utile?

La solution

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

Deux autres points:

  1. Je fais final de configuration parent afin d'interdire absolue accidentelle.
  2. j'utiliser des annotations @BeforeMethod. Ils sont disponibles depuis TestNG 5.0. Bien sûr, pour les versions antérieures à l'utilisation que vous forcé @Configuration.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top