我一直在尝试在测试类中使用配置属性,但是由于总是出现NullPointerException,所以找不到方法。
application.yaml
List<Item> snoozles =
response.data
.searches
.stream() // Stream<Search>
.flatMap(search -> search.apples.stream()) // Stream<Apple>
.flatMap(apple -> apple.pears.stream()) // Stream<Pear>
.flatMap(pear -> pear.sets.stream()) // Stream<Set>
.flatMap(set -> set.items.stream()) // Stream<Item>
.filter(item -> item.baz.fooz.unit.equals("snafu")) // Stream<Item>
.collect(Collectors.toList()); // List<Item>
YamlConfig.java
affix:
lover: 'interests'
social: 'social_media'
Service.java
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
@EnableAutoConfiguration
@Data
public class YamlConfig {
private HashMap<String, String> affix;
}
上面的代码在我的服务中可以正常工作,但是当我尝试在测试类中使用配置属性时,它不起作用。
ServiceTest.java
@Autowired
private YamlConfig config;
...
setFeatureName(config.getAffix().get("social"));
// supposed to return social_media
我也尝试了其他注释,但是它们似乎都不起作用。大多数示例都使用JUnitRunner运行测试,但我不确定这是否是为什么它们无法在我的测试类上运行的原因。
无论如何,是否有要使用MockitoJUnitRunner获得配置属性以在测试类中使用而不模拟整个过程(实际的配置非常大,很难为每个模拟结果)?
答案 0 :(得分:0)
您在测试中的@Autowired
被忽略,因为您没有选择任何Spring上下文。使它成为带有注释的集成Spring测试。
答案 1 :(得分:0)
由于您使用的是@Autowired批注,因此应用于例如:@RunWith(SpringJUnit4ClassRunner.class)
这样,您将在春季上下文中开始测试。
但是,如果您仍然想使用MockitoJUnitRunner,则可以使用: @InjectMocks 私有YamlConfig配置;