问题描述
我正在尝试对以下代码进行单元测试。我能够测试异常块,但是由于遇到异常,所以无法测试以下块。
如何模拟或设置ListTopicsResult topics = client.listTopics()
的值,以使流程进入if
块?
if(!topics.names.get().isEmpty()) { response = true; }
public boolean isbrokerRunning() {
boolean response = false;
Properties property = new Properties();
try(AdminClient client = KafkaAdminClient.create(property)) {
ListTopicsResult topics = client.listTopics();
if(!topics.names.get().isEmpty()) {
response = true;
}
} catch(Exception ex) {
response = false;
}
}
解决方法
KafkaAdminClient.create
这是一个静态函数调用,因此您需要模拟静态函数,可以在 mockito 顶部使用 powermockit 来模拟静态函数。