gpt4 book ai didi

java - 模拟 final方法的空指针异常

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

尝试模拟时出现 NullPointerException Aggregations.getAsMap()

我已经通过使用 PowerMockito.doReturn(map).when(aggs).getAsMap() 尝试了其他不同的方法,但仍然面临同样的问题

@PrepareForTest(Aggregations.class)
public class TestExample extends PowerMockTestCase {

@Test
public void testMyMethod() {
Aggregations aggs = PowerMockito.mock(Aggregations.class);
Cardinality cardinality = Mockito.mock(Cardinality.class);
Map<String, Aggregation> map = new HashMap<String, Aggregation>();
map.put("sample", cardinality);
Mockito.when(aggs.getAsMap()).thenReturn(map);
}

}
Mockito.when(aggs.getAsMap()).thenReturn(map);

调试时 aggs 值包含以下值

{Aggregations$MockitoMock$485838759@3084} Method threw 'java.lang.NullPointerException' exception. Cannot evaluate org.elasticsearch.search.aggregations.Aggregations$MockitoMock$485838759.toString()

使用 testng 及以下版本的 jars

powermock-api-mockito-2.0.2.jar

mockito-core-2.23.0.jar

最佳答案

您收到异常是因为“getAsMap”是 final方法,并且mockito进行实际的API调用而不是模拟调用。这是因为 Mockito 默认不支持模拟 Final 方法和类。

解决方案:您需要包含一个mockito-extension插件来支持此功能,而且非常简单。

检查https://www.baeldung.com/mockito-final的步骤。

关于java - 模拟 final方法的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58334273/

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