我尝试在Junit测试用例中使用Springs自己的依赖注入:
geeraerd
LOG10N ~ LOG10Nres + log10((10^(LOG10N0 - LOG10Nres) - 1) * exp(kmax *
Sl)/(exp(kmax * t) + (exp(kmax * Sl) - 1)) + 1)
我正在测试一个类名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)));
}
,其中Spring也应该自动装配一些变量。这是我的测试类:
SatzRechner
用作Configurationfile的@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
这是什么问题?
答案 0 :(得分:7)
如果要使用Spring配置类,则必须具有bean定义。请在下面找到一个例子:
测试类:
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)
public class SatzRechnerTest {
@Autowired
private SatzRechner satzRechner;
@Test
public void addiere_satz_4komma6_zu_zahlwert_10() {
assertThat("Addition von \"4,6\" ergibt nicht 10!",
satzRechner.summe("4,6"), is(equalTo(10)));
}
}
配置类:
您必须声明@Bean注释方法。这些bean由Spring容器管理。
@Configuration
public class AppConfig {
// Beans present here will be injected into the SatzRechnerTest class.
@Bean
public SatzRechner satzRechner() {
return new SatzRechner();
}
@Bean
public Rechner taschenRechner() {
return new TaschenRechner();
}
@Bean
public Zahlenfabrik zahlenfabrik() {
return new Zahlenfabrik();
}
}
注意:我让你正确处理这里返回的类型和bean参数(如果在你的上下文中存在)。
答案 1 :(得分:-1)
在成功运行测试用例之前,您必须确保两件事:
1)课程SatzRechner,Rechner& Zahlenfabrik应该在“org.binarisinformatik”包下 2)课程Rechner& Zahlenfabrik也应该用@Component注释为SatzRechner。