我正在学习Spring框架和using this reference,
我有UkranianSongs
班
import javax.annotation.Nonnull;
public class UkrainianSongs implements CompactDisk{
@Override
@Nonnull
public String getTitle(){
return "Ukranian Songs";
}
@Override
@Nonnull
public String getArtist(){
return "Skriabin";
}
}
我正在CDPlayerConfig
类
@Configuration
@ComponentScan
public class CDPlayerConfig {
@Bean
public CompactDisk anUkranianDisk(){
return new UkrainianSongs();
}
}
我正在另一个类
中自动装配光盘类@Component
public class CompactDiskBox {
@Autowired
public CompactDisk anUkrainianDisk;
}
我写了一个JUnit测试,我试图断言anUkranianDisk
bean被正确初始化并且不是null
@RunWith(JUnit4.class)
@ContextConfiguration(classes = CDPlayerConfig.class)
public class CompactDiskBoxTest {
@Autowired(required = true)
public CompactDiskBox compactDiskBox;
@Test
public void testUkranianDisk(){
assertNotNull(compactDiskBox.anUkrainianDisk);
}
}
这会抛出一个NullPointerException
,因为compactDiskBox
为null,这意味着它无法正确初始化bean。我在这里错过了什么吗?
答案 0 :(得分:4)
为了能够在单元/集成测试中使用依赖注入,您必须设置Spring TestContext Framework
。为此,您应该使用SpringJUnit4ClassRunner.class
或SpringRunner.class
运行测试。 SpringRunner.class
只是SpringJUnit4ClassRunner.class
的别名。