模拟最终方法的Nullpointer异常

问题描述 投票:0回答:1

尝试模拟]时获取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及以下版本的罐子

powermock-api-mockito-2.0.2.jar

mockito-core-2.23.0.jar

<<

NullPointerException来自getAsMap方法的调用。
使用Mockito.doReturn(map).when(aggs).getAsMap();可以解决该问题。

但是PowerMockito中似乎有一个错误,因为这样编写它不应触发getAsMap()方法的调用。

如果为运行测试的Mockito(请参阅here)启用最终模拟,则成功。

here

java elasticsearch mockito testng powermockito
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.