在mr单元中模拟上下文对象

csbfibhn  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(380)

我是hadoop的新手,这是我的第一个Map程序,我正在通过mr单元进行单元测试。
我通过config对象传递我设置的参数(year)

Configuration config =new Configuration()           
    config.set("Year", "2012");
    Job job=new Job(config ,"Yearly");

我的Map器:

public void map(ImmutableBytesWritable row, Result values, Context context)throws IOException, InterruptedException 
{   
  Configuration conf = context.getConfiguration();
  String Year= conf.get("Year");
}

在mr单元测试中,我模拟了context类和key,value

@Test
public void testMapper() throws IOException, InterruptedException
{
  context = mock(Mapper.Context.class);

  Configuration conf=mock(Configuration.class);
  when(conf.get("Year")).thenReturn("2012");
  when(context.getConfiguration()).thenReturn(conf);
  mapper.map(row, result, context);
}

但是,无法获取Map中的值(年),接收空值。我这样做是正确的还是有更好的方法来测试Map。

icomxhvb

icomxhvb1#

您应该在测试代码中从mapdriver获取配置,如下所示:

Configuration conf = mapdriver.getConfiguration();
conf.set("Year","2013");

相关问题