2013-10-14 2 views
4

Je veux simuler le bean DAO en utilisant Springockito dans un de mes IT. Dans mon informatique, je dois utiliser spring context.xml pour autowire certains services et aussi mockApplication.xml pour se moquer des DAO. Alors, comment puis-je utiliser les deux fichiers de configuration xml en même temps?Springockito comment?

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(loader = SpringockitoContextLoader.class, locations = {"classpath*:/MockApplicationContext.xml"}) 
public class PayRollComponentFacadeIT { 
    @Autowired 
    IPayRollComponentFacade payRollComponentFacade; 
    @ReplaceWithMock 
    @Autowired 
    IPayRollPersistenceManager payRollPersistenceManager; 

J'ai inclus contexte simulé comme @ContextConfiguration(loader = SpringockitoContextLoader.class, locations = {"classpath*:/MockApplicationContext.xml"})

Mais je dois comprendre le contexte du printemps aussi @ContextConfiguration(locations = {"classpath*:/testApplicationContext.xml"})

Cordialement Rajib

Répondre

1

ContextConfiguration.locations est un tableau, donc vous pouvez spécifier que peut locaction que vous voulez.

@ContextConfiguration(
     loader = SpringockitoContextLoader.class, 
     locations = {"classpath*:/MockApplicationContext.xml", 
        "classpath*:/testApplicationContext.xml"} 
) 

BTW: (c'est seulement un soupçon de ma mémoire, je ne sais pas si le problème persiste, ou si je l'ai fait quelque chose de mal) Il y a longtemps j'ai remarqué quelques problèmes lorsque en utilisant deux paramètres de localisation, car il semble que ce printemps créer deux conexts (un pour chaque emplacement). Pour cette raison, j'utilise un seul fichier de configuration inculde s les deux fichiers de configuration normale. (@see https://stackoverflow.com/a/3414669/280244)

4

Les annotations Springockito permettent d'éviter le besoin d'un contexte faux supplémentaire.

Juste à énumèrent OAC se moque dans le même cas test:

@ReplaceWithMock 
DAO dao; 

Ce dao est automatiquement remplacé dans le contexte principal de l'application. Le contrôleur verrait le haricot moqué.

+0

'@ Autowired' est requis avant' @ ReplaceWithMock' !! – MariuszS

+2

'@ Autowired' est nécessaire uniquement dans le cas où vous avez besoin d'accéder à une instance simulée directement dans la classe de cas de test. Ce n'est pas nécessaire si vous avez juste besoin de remplacer le haricot par un simulacre au printemps. Alors tous les autres haricots obtiendraient la version moqueuse. C'est la fonctionnalité la plus cool des annotations Springockito. – Vadzim

+1

Wow, belle fonctionnalité, merci :) – MariuszS