Le printemps de l'Injection de Dépendances avec TestNG
Printemps de soutien JUnit assez bien sur que:
Avec le RunWith
et ContextConfiguration
annotation, les choses semblent très intuitive
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:dao-context.xml")
Ce test vous permettra d'être en mesure d'exécuter dans Eclipse & Maven correctement.
Je me demande si il y a les trucs similaires pour TestNG. Je suis en train d'étudier cette "Prochaine Génération" Cadre mais je n'ai pas trouver une correspondance pour le test avec le Printemps.
Vous devez vous connecter pour publier un commentaire.
Il fonctionne avec TestNG ainsi. Votre test les besoins de la classe de étendre l'une des classes suivantes:
org.springframework.test.contexte.testng.AbstractTestNGSpringContextTests
org.springframework.test.contexte.testng.AbstractTransactionalTestNGSpringcontexttests
@Transactional
peuvent s'étend non transactionnelles version par erreur. Mais malheureusement, il n'existe pas d'autre moyen d'utiliser un Ressort avec TestNG.Voici un exemple qui a fonctionné pour moi:
Printemps et TestNG travaillent bien ensemble, mais il ya certaines choses à connaître. Côté de sous-classement AbstractTestNGSpringContextTests, vous devez être conscient de la façon dont il interagit avec la norme TestNG réglage/démontage des annotations.
TestNG a quatre niveaux de configuration
qui se produisent exactement comme vous le souhaitez (excellent exemple de l'auto-documentation des Api). Elles ont toutes une valeur facultative appelée "dependsOnMethods" qui peut prendre une Corde ou une Chaîne de caractères[], qui est le nom ou nom(s) des méthodes au même niveau.
La AbstractTestNGSpringContextTests classe a un BeforeClass méthode annotée appelé springTestContextPrepareTestInstance, que vous devez définir votre méthode de configuration d'dépendra de si vous utilisez un autocâblés classe en elle. Pour les méthodes, vous n'avez pas à vous soucier de l'permettra à l'autowiring, comme cela se produit lorsque la classe de test est le programme d'installation avant de méthode de classe.
Cela ne laisse que la question de la façon dont vous pourriez utiliser un autocâblés classe dans une méthode annotée avec BeforeSuite. Vous pouvez le faire manuellement en appelant springTestContextPrepareTestInstance - alors que ses pas la configuration par défaut pour ce faire, je l'ai fait à plusieurs reprises avec succès.
Donc, pour illustrer, une version modifiée de Arup exemple:
@Autowire
semble prendre place de TRÈS en retard, après @BeforeTest (mais avant le @de Test). J'ai essayé d'ajouter le dependsOnMethods, mais puis-je obtenir: Maclasse est en fonction de la méthode protected void org.springframework.test.context.testng.AbstractTestNGSpringContextTests.springTestContextPrepareTestInstance() throws java.lang.Exception, ce qui n'est pas annotée avec @Test...