任何人都可以解释使用MR-Unit进行单位测试MR工作与使用JUnit和Mockito相比有什么好处?
具体来说,我可以做些什么,我不能使用JUnit做它们,或者它更难?
我的想法是将所有逻辑从mappers / reducers转移到辅助类,并验证是否在模拟上调用了适当的方法。
为什么要使用MR-Unit?
答案 0 :(得分:0)
我认为mrunit给你的最重要的事情是用于测试mapreduce工作的DSL。单元测试应该是关于可读性和讲故事的,所以如果你有一个适合域的API,那么编写测试并在以后理解它们会更容易。
另一个可能同样重要的是它提供了比JUnit默认断言更好的断言错误和差异。
当然你也可能只是坚持使用JUnit,但你最终可能会以半支持的方式在功能上重新实现大部分mrunit。
但它不是/或者,因为我看到mrunit的领域有点不同。它迫使你以一种非常简单的方式思考你的工作:如果你把某些东西放在你想要得到某些东西(也许一些计数器增加),而JUnit测试经常测试某种逻辑。所以你当然可以单独放置和测试你的逻辑(如果你有复杂的逻辑,甚至可能应该这样做)并使用mrunit用于某种" blackbox"只要您为输入获得正确的输出,就可以测试您在哪里以及如何实施逻辑。