我是Hadoop的新手,这是我的第一个绘图程序,我通过MR单元进行单元测试。
我正在通过配置对象
传递参数(年份) Configuration config =new Configuration()
config.set("Year", "2012");
Job job=new Job(config ,"Yearly");
我的映射器:
public void map(ImmutableBytesWritable row, Result values, Context context)throws IOException, InterruptedException
{
Configuration conf = context.getConfiguration();
String Year= conf.get("Year");
}
在MR单元测试中,我正在模拟上下文类以及键值
@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);
}
但是无法在映射中获取值(Year),接收null。我这样做是正确的,还是有更好的方法来测试映射。
答案 0 :(得分:1)
您应该在测试代码中从mapdriver获取配置,如下所示:
Configuration conf = mapdriver.getConfiguration();
conf.set("Year","2013");