gpt4 book ai didi

java - mockito test void 方法,重写成员变量

转载 作者:行者123 更新时间:2023-12-01 14:37:23 24 4
gpt4 key购买 nike

我是单元测试和mockito的新手,但我需要测试这个类:

public class XMLHandler {
private static final String CONFIG_FILE = "path/to/xml";
private XMLConfiguration config = null;

public XMLHandler() {
try {
config = new XMLConfiguration(CONFIG_FILE);
config.setValidating(true);
} catch (ConfigurationException e) {
LOGGER.log(Level.SEVERE, e );
}
}

public List<ConfigENtries> getEntries() {
// do some stuff
return list;
}

@Override
public void removeEntry(int index) {
// remove entry
}
}

我想我必须用模型覆盖配置变量,但我没有 setter ,那么我该怎么做呢?那么removeEntry呢?如何测试 void 方法?

我希望有人能帮我解决这个问题

最佳答案

由于您可以修改您的类,因此我建议采用以下结构:

public class XMLHandler {
private final XMLConfiguration config;

public XMLHandler(XMLConfiguration config) {
this.config = config;
}

public List<ConfigENtries> getEntries() {
// do some stuff
return list;
}

@Override
public void removeEntry(int index) {
// remove entry
}
}

确保 XMLConfiguration 是一个接口(interface),而不是具体的实现。然后您可以模拟传递给构造函数的 config 参数。 (注意:您也可以模拟非最终具体类,但最好使用接口(interface)。)

然后,您可以测试 XMLHandler 的公共(public)方法,并通过检查对 config 的调用并断言方法响应正确来确认正确的行为。

可以毫无问题地测试空方法。您只需要某种方法来确定对象和世界的状态已被调整和纠正。因此,也许您需要在测试结束时调用 getter 方法以确保值已更改。或者验证是否对您的模拟对象进行了预期的调用。

关于java - mockito test void 方法,重写成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16354529/

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