gpt4 book ai didi

java - NullPointerException:Junit Spring 注解配置

转载 作者:行者123 更新时间:2023-11-29 08:28:00 26 4
gpt4 key购买 nike

我正在学习 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 类中创建一个 bean

@Configuration
@ComponentScan
public class CDPlayerConfig {

@Bean
public CompactDisk anUkranianDisk(){
return new UkrainianSongs();
}
}

我正在另一个类中 Autowiring 光盘类

@Component
public class CompactDiskBox {

@Autowired
public CompactDisk anUkrainianDisk;
}

我写了一个 JUnit 测试,我试图断言 anUkranianDisk bean 被正确初始化并且不为空

@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。我在这里遗漏了什么吗?

最佳答案

为了能够在单元/集成测试中使用依赖注入(inject),您必须设置 Spring TestContext Framework。为此,您应该使用 SpringJUnit4ClassRunner.classSpringRunner.class 运行测试。 SpringRunner.class 只是 SpringJUnit4ClassRunner.class 的别名。

关于java - NullPointerException:Junit Spring 注解配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50768813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com