2010-07-22 3 views
4

Les spring framework documentation états:Comment un test peut-il «salir» un contexte d'application de printemps?

Dans le cas peu probable qu'un test peut « sale » du contexte d'application, nécessitant rechargeant - par exemple, par changer une définition de haricots ou de l'état d'un objet d'application - La prise en charge des tests de Spring fournit des mécanismes pour que l'unité de test recharge les configurations et reconstruise le contexte de l'application avant pour exécuter le test suivant.

Quelqu'un peut-il élaborer cela? Je ne comprends pas. Les exemples seraient bien.

Répondre

8

Chaque méthode de test JUnit est supposée être isolée, c'est-à-dire qu'elle n'a pas d'effets secondaires qui pourraient entraîner une autre méthode de test à se comporter différemment. Cela peut être réalisé en modifiant l'état des haricots qui sont gérés par le printemps. Par exemple, supposons que vous ayez un bean géré par le ressort de la classe MySpringBean qui a une propriété de chaîne avec la valeur "string". La méthode de test suivante testBeanString aura un résultat différent selon qu'il est appelé avant ou après la méthode testModify.

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"/base-context.xml"}) 
public class SpringTests { 

    @Autowired 
    private MySpringBean bean; 

    @Test public void testModify() { 
     // dirties the state of a managed bean 
     bean.setString("newSring"); 
    } 

    @Test pubic void testBeanString() { 
     assertEquals("string", bean.getString()); 
    } 
} 

utiliser l'annotation @DirtiesContext pour indiquer que la méthode d'essai peut changer l'état des grains réussi de printemps.

+0

Merci, je pense que je comprends maintenant. – JavaRocky

+1

Salut, savez-vous s'il existe un moyen d'appeler manuellement le contexte de dirties? Je ne peux pas utiliser l'annotation ou étendre la classe malheureusement .. – AlanFoster