如何在进行mapreduce单元测试时跳过真正的调用?

时间:2014-12-14 13:51:23

标签: hadoop

我正在编写map reduce程序的单元测试,在reduce()中的setup()期间,它有一些上下文和配置以及htable操作,如下所示:

protected void setup(Context context) {
  try {
    Configuration c = context.getConfiguration();
    table =
        new HTable(c,"TableName");
    table.setAutoFlushTo(false);
  } catch (Exception e) {
    System.out.printly(e.toString());
  }
}

我尝试使用MRUnit,PowerMock(和Mockito)来模拟conext和配置,但似乎无效。

单元测试代码:

Reduce.Context c = reducedriver.getContext();
Configuration confReduce = reducedriver.getConfiguration();

confReduce.setStrings("io.serializations",
    confReduce.get("io.serializations"),
    MutationSerialization.class.getName(),
    ResultSerialization.class.getName(),
    KeyValueSerialization.class.getName());

when(c.getConfiguration()).thenReturn(confReduce);

当我运行单元测试时,context.getConfiguration()似乎仍然尝试连接真正的hadoop环境并生成许多zookeeper和连接错误。

如何解决此问题?感谢。

0 个答案:

没有答案