java - 模拟方法返回 null

标签 java unit-testing mockito powermock

我有以下方法

public ResultScanner getScanner(Scan scan) {
    Table table = getTableInstance("Sampletable");
    return table.getScanner(scan);
}

为此我编写了以下junit测试代码

Connection mockconnection = PowerMockito.mock(Connection.class);
Table mocktable = PowerMockito.mock(Table.class);
PowerMockito.when(mockconnection.getTable(TableName.valueOf(Mockito.anyString())))
    .thenReturn(mocktable);

Scan mockedScan = PowerMockito.mock(Scan.class);
ResultScanner mockrs = PowerMockito.mock(ResultScanner.class);
PowerMockito.when(mocktable.getScanner(mockedScan)).thenReturn(mockrs);

测试方法时

声明

Table table = getTableInstance("Sampletable");

运行良好并给出模拟表对象但是声明

table.getScanner(scan);

返回空值。

请在下面的链接中找到Table接口(interface)的源代码

http://grepcode.com/file/repo1.maven.org/maven2/org.apache.hbase/hbase-client/1.1.1/org/apache/hadoop/hbase/client/Table.java

请在这方面指导我??

最佳答案

将测试用例的最后一行替换为

 PowerMockito.when(mocktable.getScanner(Mockito.any(Scan.class))).thenReturn(mockrs);

它应该工作

关于java - 模拟方法返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41165788/

相关文章:

mockito - mockito & powermock & powermockito 之间有什么联系和区别?

javax.net.ssl.SSLPeerUnverifiedException : Hostname XX. XXX.XX.XX 未验证:

java - 在客户端以编程方式打开 Excel 文件时,response.flushBuffer() 给我一个错误

java - 斯坦福 NLP——指定 POS

java - 当被测类不是 Activity 时获取用于 AndroidTestCase 的上下文

java - 基于应用参数 JUnit 验证行为

java - 如何制作不同长度的随机二维锯齿状数组?

.net - 为什么接口(interface)契约(Contract)不适用于装配外部?

c# - 如何在 Fluent Assertions 中指定用于检查字典的键和值比较器?

java - 如何在 JUnit 和 Mockito 中模拟 ResultSet 以不返回 null