如何测试后构造方法
How do I test a postconstruct method
我有一个如下所示的@PostConstruct 方法:
@PostConstruct
public void init() throws IOException {
if (getPrimaryDirectory() == null) {
primaryDirectory = new File(localDirectory, DEFAULT_PRIMARY_DIRECTORY);
}
FileUtils.forceMkdir(primaryDirectory);
if (secondaryDirectory() == null) {
secondaryDirectory = new File(localDirectory, DEFAULT_SECONDARY_DIRECTORY);
}
FileUtils.forceMkdir(secondaryDirectory);
}
我的声纳分析抱怨说有些情况没有被测试覆盖。例如测试 primaryDirectory 为 null 时的条件。
primaryDirectory 的值是使用@value 和表达式语言从属性文件中注入的。
我用 mockito 试过了。但我想,我不能真正模拟它,因为它是 @PostConstruct 当我初始化我的模拟时,它已经调用了 init 方法。
我应该在这里测试哪些场景以及如何测试?
谢谢。
只是作为纯单元测试来测试。不要将任何注释处理器连接到此测试,只需手动设置所有值并显式调用方法。这种方式应该是对这个功能的正确测试。
我有一个如下所示的@PostConstruct 方法:
@PostConstruct
public void init() throws IOException {
if (getPrimaryDirectory() == null) {
primaryDirectory = new File(localDirectory, DEFAULT_PRIMARY_DIRECTORY);
}
FileUtils.forceMkdir(primaryDirectory);
if (secondaryDirectory() == null) {
secondaryDirectory = new File(localDirectory, DEFAULT_SECONDARY_DIRECTORY);
}
FileUtils.forceMkdir(secondaryDirectory);
}
我的声纳分析抱怨说有些情况没有被测试覆盖。例如测试 primaryDirectory 为 null 时的条件。
primaryDirectory 的值是使用@value 和表达式语言从属性文件中注入的。
我用 mockito 试过了。但我想,我不能真正模拟它,因为它是 @PostConstruct 当我初始化我的模拟时,它已经调用了 init 方法。 我应该在这里测试哪些场景以及如何测试?
谢谢。
只是作为纯单元测试来测试。不要将任何注释处理器连接到此测试,只需手动设置所有值并显式调用方法。这种方式应该是对这个功能的正确测试。