@Après ,@avant ne fonctionne pas dans le cas de test
J'ai commencé à tester et maintenant je veux utiliser @After
, @Before
et @Test
mais mon application ne fonctionne que le @Before
méthode et donne en sortie sur console
avant
Cependant, si je supprime @After
et @Before
il exécute le @Test. Mon code est ici:
public class TestPractise extends AbstractTransactionalDataSourceSpringContextTests{
@Before
public void runBare(){
System.out.println("before");
}
@Test
public void testingMethod(){
System.out.println("testing");
}
@After
public void setDirty(){
System.out.println("after");
}
}
Pourquoi ne pas @After
, @Test
et @before
de travail simultanément?
Vous devez vous connecter pour publier un commentaire.
La
AbstractTransactionalDataSourceSpringContextTests
classe les forces de l'utilisation de l'ancienne JUnit 3.x la syntaxe, ce qui signifie que l'un des JUnit 4 annotation ne fonctionnera pas.Votre méthode
runBare()
est exécuté non pas à cause de la@Before
annotation, mais parce qu'il est nommérunBare()
, qui est une méthode fournie parConditionalTestCase
et JUnitcas de test
classe.Si vous avez 2 solutions:
AbstractTransactionalDataSourceSpringContextTests
, mais l'utilisation de laonSetUp
etonTearDown
méthodes à la place de la@Before
et@After
méthodes.Utilisation
@BeforeEach
au lieu de@Before
et@AfterEach
au lieu de@After
.Il devrait fonctionner... Mais puisque vous travaillez avec le framework spring et JUnit 4 a été introduit il y a des années je vous suggérons d'utiliser des annotations à la place de l'héritage.
Donc, d'annoter vous classe avec
@RunWith(SpringJUnit4ClassRunner.class)
. Supprimerextends AbstractTransactionalDataSourceSpringContextTests
.N'oubliez pas de faire le @Avant et @Après les méthodes statique
Maintenant, il doit travailler.
Même si vous voulez prolonger le Printemps de test abstrait classes au moins faire attention à ce que certains d'entre eux sont obsolètes. Par exemple la classe
AbstractTransactionalDataSourceSpringContextTests
est obsolète.