Lors de la mise en œuvre des tests E2E à l'aide de JUnit dans le lanceur de tests, j'ai divisé la classe de test pour chaque écran et API. À ce stade, j'ai examiné comment définir une méthode de test commune à plusieurs classes de test.
En définissant une méthode de test commune dans la classe parente de la classe de test, la méthode de test de la classe parente est également exécutée lorsque chaque classe de test est exécutée.
Le comportement propre à chaque classe de test est défini comme une interface (ou une méthode abstraite de la classe parente), et la méthode de test commune utilise cette interface pour implémenter le test.
public abstract class CommonTestA {
//Une méthode abstraite pour définir un comportement spécifique à une classe de test
abstract SomeObject doSomething();
@Test
public void commonTestX() {
// doSomething()Pour implémenter un cas de test commun à l'aide
}
}
//CommonTest lors de l'exécution de cette classe de test.commonTestX()Est également exécuté
public class TestClass extends CommonTestA {
//Implémenter des cas de test spécifiques à la classe de test
}
Avec cette méthode, une classe de test ne peut hériter qu'une seule classe de test commune en raison des restrictions d'héritage Java, ce qui pose un problème lorsque vous souhaitez créer plusieurs classes de test communes.
Le problème (1) peut être évité en utilisant la méthode par défaut de l'interface introduite dans Java 8. (Étant donné que plusieurs interfaces peuvent être implémentées dans une classe.) Cependant, dans JUnit 4 et versions antérieures, la méthode par défaut n'est pas exécutée dans la classe d'implémentation, donc JUnit 5 doit être utilisé.
public interface CommonTestA {
SomeObject doSomething();
@Test
default void commonTestA() {
//Définir une méthode de test commune comme méthode par défaut
}
}
//Plusieurs interfaces de test communes peuvent être implémentées dans une classe de test
public class TestClassX implements CommonTestA, ComonTestB {
// ...
}
Recommended Posts