Я пытаюсь использовать Спрингс собственный Dependency Injection в тестовом Junit случае:Spring с JUnit тестирования и Dependency Injection не работает
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 тестирует класса имен SatzRechner
, в которых Spring должны также autowire некоторые переменные. Вот мой класс под тест:
@Component
public class SatzRechner {
@Autowired //@Inject
private Rechner taschenRechner;
@Autowired
private Zahlenfabrik zahlenfabrik;
public Integer summe(String zeichenSatz) {
return taschenRechner.summe(zahlenfabrik.erzeugeZahlen(zeichenSatz));
}
}
И AppConfig.class
, который использует в качестве Configurationfile выглядит следующим образом:
@Configuration
@ComponentScan(value={"org.binarisinformatik"})
public class AppConfig {
}
Что здесь проблема?
В чем проблема? – sidgate
он не автоустанавливает переменные - imm получает nullpointerexception .... –
'SatzRechner' похоже, находится в пакете' org.binarisinformatik.satzrechner'. добавьте его в 'componentScan' – sidgate