Printemps avec JUnit Test et l'Injection de Dépendance ne fonctionne pas
J'essaie d'utiliser des Ressorts propres de l'Injection de Dépendances dans un cas de test Junit:
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import org.binarisinformatik.api.AppConfig;
import org.binarisinformatik.satzrechner.SatzRechner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=AppConfig.class)
//@SpringApplicationConfiguration(classes = {AppConfig.class})
public class SatzRechnerTest {
@Autowired
private SatzRechner satzRechner; //SUT
@Before
public void setUp() {
// AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SatzRechnerTest.class);
//satzRechner=context.getBean(SatzRechner.class);
}
@Test
public void addiere_satz_4komma6_zu_zahlwert_10() {
assertThat("Addition von \"4,6\" ergibt nicht 10!",
satzRechner.summe("4,6"), is(equalTo(10)));
}
Im test d'une classe de noms SatzRechner
de Printemps devrait également autowire certaines variables. Voici ma Classe de test:
@Component
public class SatzRechner {
@Autowired //@Inject
private Rechner taschenRechner;
@Autowired
private Zahlenfabrik zahlenfabrik;
public Integer summe(String zeichenSatz) {
return taschenRechner.summe(zahlenfabrik.erzeugeZahlen(zeichenSatz));
}
}
Et AppConfig.class
qui est de l'aide que Configurationfile ressemble à ça:
@Configuration
@ComponentScan(value={"org.binarisinformatik"})
public class AppConfig {
}
Ce qui est ici le problème?
quel est le problème?
il ne autowire les variables - imm arriver nullpointerexception....
Composant de balayage prend un forfait de base de l'analyse de tous les paquets sous le package de base. Ajoutant qu'il ne changera pas une chose. Mais ce n'est pas de travail, poste de la trace de la pile... Un
Pouvez-vous créer un minime mais complète du projet autonome qui illustre le problème et de le poster quelque part (github)?
il ne autowire les variables - imm arriver nullpointerexception....
SatzRechner
semble être dans org.binarisinformatik.satzrechner
paquet. ajouter à componentScan
Composant de balayage prend un forfait de base de l'analyse de tous les paquets sous le package de base. Ajoutant qu'il ne changera pas une chose. Mais ce n'est pas de travail, poste de la trace de la pile... Un
NullPointer
quand l'auto câblage ne devrait pas arriver que le contexte coups avant que.Pouvez-vous créer un minime mais complète du projet autonome qui illustre le problème et de le poster quelque part (github)?
OriginalL'auteur Hakan Kiyar | 2015-10-30
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez utiliser une configuration Spring classe, ce que l'on doit avoir haricots définitions. Vous trouverez un exemple ci-dessous :
De la classe de Test:
Classe de Configuration :
Vous devez déclarer @Bean annoté méthodes. Ces haricots sont gérés par le Printemps conteneur.
Note : je vous laisse gérer correctement retourné types ici et les haricots paramètres (si présent dans votre contexte).
OriginalL'auteur André Blaszczyk
Il y a deux choses que vous devez s'assurer avant d'exécuter les cas de test avec succès:
1) Classes SatzRechner, Rechner & Zahlenfabrik devrait être sous "org.binarisinformatik" package
2) les Classes de Rechner & Zahlenfabrik devrait également être annotée avec @Composant comme SatzRechner.
OriginalL'auteur K. Singh