2016-12-22 1 views
1

J'utilise InitializingBean pour initialiser les propriétés statiques dans une classe modale. Cet objet, je suis câblage automatique dans un serviceRunWith SpringJUnit4ClassRunner ne permet pas de charger l'application ApplicationContext avec InitializingBean

Quand j'écris un test de service, je jette l'erreur: Impossible de charger ApplicationContext

Config classe

public class AppConfig { 
    private String prop1; 

    protected void setProp1(String prop) { 
     this.prop1 = prop; 
    } 

    public String getProp1() { 
     return prop1; 
    } 
} 

PropertyIntilizer classe

public class PropertyIntializer implements InitializingBean { 

    @Autowired 
    private AppConfig appConfig; 

    @Override 
    public void afterPropertiesSet() throws Exception { 

     appConfig.setProp1("PROP"); 
    } 
} 

Classe de service

@Service 
public class Service { 

    @Autowired 
    private AppConfig appConfig; 

    public void doSomething(){ 
     System.out.println(appConfig.getProp1()); 
    } 
} 

TestClass

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = { TestConfig.class }) 
public class ServiceTest { 

    @Autowired 
    private Service service; 

    @Test 
    public void testService(){ 
     service.doSomething(); 
    } 
} 

Cela donne une erreur: Impossible de charger ApplicationContext

Mais quand je retire Autowired AppConfig, cela fonctionne

Edit: TestConfig classe

@Configuration 
@ComponentScan(basePackages = { "base.package" }) 
public class TestConfig { 

} 

ma les classes principales sont dans base.package.main et les classes de test dans base.package.test

+0

S'il vous plaît nous montrer le code source pour 'TestConfig'. Sinon, nous ne pouvons pas vraiment vous aider. –

+0

Ajout de code pour 'TestConfig' – warrior107

+0

Pouvez-vous s'il vous plaît fournir la trace de la pile pour l'erreur" Failed to load ApplicationContext "que vous rencontrez? –

Répondre

0

problème similaire m'a fait résolu par l'ajout JRE (des thats est livré avec le serveur d'applications dans mon cas websphere) dans le chemin de buid

+0

Je cours sur tomcat. Quel JRE est-ce? Aussi le code principal fonctionne bien, j'ai des problèmes avec le test en cours. – warrior107

+0

Vous pouvez télécharger le JRE de http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html problème similaire a été résolu pour moi en ajoutant JRE dans le buildpath a également ajouté la dépendance ci-dessous to build.gradle groupe de compilation: 'org.apache.openejb', nom: 'javaee-api', version: '6.0-6' –