unit-testing - 用于单元测试的 MR-Unit 与 JUnit

标签 unit-testing hadoop junit mrunit

谁能解释一下使用 MR-Unit 进行单元测试 MR 作业与使用 JUnit 和 Mockito 相比有什么好处?

具体来说,有哪些事情是我可以用 JUnit 做而不能做的,或者更难做?

我的想法是将所有逻辑从映射器/缩减器转移到帮助器类,并且只验证是否在模拟上调用了适当的方法。

为什么要使用 MR-Unit?

最佳答案

我认为 mrunit 为您提供的最重要的东西是用于测试 mapreduce 作业的 DSL。单元测试应该是关于可读性和讲述故事的,因此如果您有一个适合该领域的 API,那么编写测试和稍后理解它们会变得更容易。

另一件可能同样重要的事情是它提供了比 JUnit 默认断言更好的断言错误和差异。

当然,您也可以只坚持使用 JUnit,但您最终可能会以半支持的方式在功能上重新实现大部分 mrunit。

但这不是非此即彼,因为我看到 mrunit 的域有点不同。它迫使您以一种非常简单的方式思考您的工作:如果您将某些东西放入,您希望取出某些东西(并且可能增加一些计数器),而 JUnit 测试通常测试某种逻辑。所以当然你可以单独放置和测试你的逻辑(如果你有复杂的逻辑,甚至可能应该这样做)并使用 mrunit 进行某种“黑盒”测试,只要你不关心逻辑在哪里以及如何实现为您的输入获得正确的输出。

关于unit-testing - 用于单元测试的 MR-Unit 与 JUnit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36533261/

相关文章:

unit-testing - 使用系统时钟的程序的测试用例

python - Django Nose 这个测试怎么写?

c++ - 在单元测试中验证 static_assert

hadoop 将本地文件系统文件夹复制到 HDFS

java - RestController 的 Junit - 断言错误

java - 相应的 try block 中永远不会抛出异常

c# - 使用 C#/Moq 框架模拟带有输入参数的异步 DbContext 函数

hadoop - HBase 区域服务器崩溃

hadoop - pig 不能使用的场景

java - 使用 xpath 和 Java DOM 解析器返回 junit 结果 xml 中的所有属性