gpt4 book ai didi

java - 使用 mockito 测试 java.util.prefs.Preferences void 方法

转载 作者:行者123 更新时间:2023-11-28 21:10:30 25 4
gpt4 key购买 nike

我不知道如何正确测试带有 Preferences 对象的 void 方法,这是我想测试的方法:

public void setPersonFilePath(File file, ViewGenerator viewGenerator) {
Preferences prefs = Preferences.userNodeForPackage(ViewGenerator.class);
if (file != null) {
prefs.put("filePath", file.getPath());

// Update the stage title.
viewGenerator.getPrimaryStage().setTitle("AddressApp - " + file.getName());
} else {
prefs.remove("filePath");

viewGenerator.getPrimaryStage().setTitle("AddressApp");
}
}

这是我的测试类:

private FileManager fileManger;
private File file;
private ViewGenerator viewGenerator;
private Preferences preferences;

@Before
public void prepareDependencies() {
MockitoAnnotations.initMocks(this);
fileManger = new FileManager();
file = mock(File.class);
viewGenerator = mock(ViewGenerator.class);
}

@Test
public void test() {

fileManger.setPersonFilePath(file, viewGenerator);
verify(preferences).remove("filePath");
}

我试过模拟首选项,以及在测试方法中使用新对象初始化首选项。

最佳答案

Mockito 无法模拟 Preferences.userNodeForPackage() 等静态方法。

我的建议是将这些静态调用包装到自定义类 PreferenceManager 中,并将 PreferenceManager 的实例注入(inject)到被测对象中。

然后您可以模拟 PreferenceManager,注入(inject)模拟,并使其返回模拟 Preferences

关于java - 使用 mockito 测试 java.util.prefs.Preferences void 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30985675/

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