我正在编写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和连接错误。
如何解决此问题?感谢。