Je suis conscient qu'il y a une autre question dans ce forum qui PEUT sembler similaire. Veuillez lire attentivement avant de marquer comme doublon.Comment utiliser un test JUnit existant dans une autre classe de test, de telle sorte qu'il passe par @before?
Je cherche un moyen d'exécuter un test, qui est défini dans une autre classe, de telle sorte qu'il passe par l'annotation @before.
public TestClass1 {
@before
public void setup() throws Exception{
super.setup();
}
@Test
public void testSomething(){...}
}
public TestClass2 {
@Test
public void testSomethingAndSomethingElse() {
// Somehow execute testSomething() in a way which will force
it to go through the @before
// and then test something else
}
}
Dans la question en ligne similaire il y a 2 suggestions êtes les:
1. Prolonge TestClass2 de TestClass1 - ce qui est impossible pour moi depuis que je transmets une autre classe déjà.
2. Pour accéder TestClass1 de TestClass2 en utilisant la délégation, comme ceci:
// Instantiate TestClass1 as a member of TestClass2
public TestClass2 {
private TestClass1 one = new TestClass1();
public void testSomethingAndSomethingElse1() {
one.testSomething();
}
}
Le problème ici est que lorsque vous appelez one.testSomething() - vous ne serez pas passer par l'annotation @Before de TestClass1, qui, à mon case est nécessaire pour initier d'autres objets.
Existe-t-il un autre moyen?
L'utilisation est pour les tests d'intégration et non pour les tests unitaires. J'ai besoin de la possibilité d'utiliser @test dans un autre @test, et pas n'importe quelle autre solution de contournement.
'setup()' de 'TestClass2'? – c0der
car le fichier setup() prépare les données pour le test @test dans TestClass1. Ces données seront hors de portée pour TestClass1 lorsqu'il est appelé à partir de TestClass2. –
Les sous-classes 'TestClass1' et' TestClass2' de la même classe sont-elles? Si oui, envisagez de déplacer l'annotation '@ before 'vers leur super classe. – c0der