HBase 应用程序:通过模拟 HBase 进行单元测试

Sat*_*ddu 3 junit unit-testing hbase mockito powermock

我的应用程序中有一个从 HBase 访问数据的方法。它使用scan方法来查询hbase。我想编写单元测试用例来测试这个功能。所以我想模拟 hbase 调用。怎么做?我正在使用 Mockit 进行模拟。

Xin*_*nzz 5

如果您使用 Mockito,您可以存根您的类以使它们返回您想要的内容。

假设您调用了一个类,并在该类中HBaseHelper调用了一个方法,该方法使用扫描仪从 hbase 检索数据。getData()现在假设您useData()在另一个类中调用了另一个方法,如下所示:

public String useData() {
  String data = hbaseHelper.getData();

  // ... Do things with data
  return data;
}
Run Code Online (Sandbox Code Playgroud)

如果您使用 Mockito,您可以在测试中有效地执行类似的操作以返回虚拟“数据”并测试使用此数据的方法:

import org.mockito.Mock;
import org.mockito.Mockito.when;

@Mock
HBaseHelper hbaseHelper;

@Test
public void testFoo() {
  when(hbaseHelper.getData()).thenReturn("hello world");

  assertThat(useData()).equals("hello world");
}
Run Code Online (Sandbox Code Playgroud)