0

我正在尝试使用 MRUnit,但我所看到的示例都与我正在尝试做的完全不匹配。

我的减速器输出一个键和突变,但我似乎无法将突变与预期进行比较。它显示对象相同,但地址为 0 并出现以下错误:

junit.framework.AssertionFailedError: expected: <org.apache.accumulo.core.data.Mutation@0> but was <org.apache.accumulo.core.data.Mutation@0>

我正在使用 reduceDriver.run() 方法,并尝试在我预期的突变对象上使用实际的 assertEquals。有什么我想念的吗?

感谢您的任何意见。

4

3 回答 3

0

Mutation 没有适当的 equals() 实现。最好的办法是比较 getUpdates() 和 getRow() 的结果。它们分别返回一个 List 和 byte[] ,它们很容易比较。

于 2013-09-24T15:19:44.913 回答
0

您可以扩展 Mutation 并将新类传递给 mrunit。只需在新类中覆盖 equals 即可。

于 2013-09-26T14:52:20.677 回答
0

Mutation 有一个适当的 equals() 方法,至少在 1.4.x 行中是这样。但是,该方法调用一个私有的 serialize() 方法来修改要检查的数据。

过去我通过将 Mutation 包装在一个新的 Mutation 中来解决这个问题,它在后台调用 serialize:

 assertEquals(expectedMutation, new Mutation(actualMutation));
于 2013-09-24T16:08:28.870 回答