问题标签 [mrunit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Hadoop Mrunit 通过异常
当我为 MapReduce 运行单元测试时,我遇到了以下异常。我已经导入了所有可能的 jar。我不确定我哪里出错了。我已经包含了我在下面导入的 jar 的屏幕截图。
我正在测试一个简单的代码:
我得到了以下例外:
unit-testing - 用于单元测试的 MR-Unit 与 JUnit
谁能解释一下使用 MR-Unit 进行单元测试 MR 作业与使用 JUnit 和 Mockito 相比有什么好处?
具体来说,我可以做哪些我无法使用 JUnit 做的事情,或者更难做的事情?
我的想法是将所有逻辑从映射器/减速器移动到辅助类,并验证是否在模拟上调用了适当的方法。
为什么要使用 MR-Unit?
unit-testing - mrunit的继任者是什么?
今天我发现 ASF 停用了 mrunit(请参阅https://blogs.apache.org/foundation/entry/the_apache_news_round_up85和https://issues.apache.org/jira/browse/HADOOP-3733以及主页本身)。除了“不活动”之外,没有给出任何理由,所以我想必须有一个替代方案?
将来应该使用什么来代替 mrunit 来对 mapreduce 作业进行单元测试?
configuration - MRUnit 上下文对象返回空配置
需要 MRUnit 的帮助。我将我的配置文件添加到 MapReduceDriver,如下所示。
当 reducer 类试图访问 setUp() 方法中的属性时,它没有从传入的配置文件中获取值。
// 此 appNameListStr 返回为 null;
对此有任何建议/提示。
java - 测试 MRUnit 中的特定异常
在 TestNG(或 JUnit)中,这很简单。类似于:
上面的测试将通过,因为String x
isnull
并抛出 NullPointerException。
但在 MRUnit 中,断言的工作方式不同。以下是映射器类的测试方法:
它接受输入someData
并期望输出someKey
。但是我需要覆盖一个 Try/Catch 块,它someData
通过提供错误数据来检查 ' 的有效性。在这种情况下,似乎.withOutput
甚至不需要方法。MRUnit 中是否有方便测试的方法Exceptions
?
mapreduce - 在使用 MRUnit 测试之前调整输出
我正在使用 mapreduce2 创建一个应用程序并使用 MRUnit 1.1.0 对其进行测试。在其中一项测试中,我正在检查减速器的输出,该减速器将“当前系统时间”放入其输出中。即在reducer 执行时,时间戳用于context.write()
与输出的其余部分一起写入。现在,即使我在测试方法中使用与在减速器中使用的方法相同的方法来查找系统时间,但两者计算的时间通常相隔一秒,例如2016-05-31 19:10:02
和2016-05-31 19:10:01
。所以两者的输出结果是不同的,例如:
这会导致断言错误。我希望忽略时间戳的这种差异,因此如果除时间戳之外的其余输出匹配,则测试通过。我正在寻找一种方法来模拟用于返回系统时间的方法,以便返回硬编码的值,并且reducer 和测试在测试期间都使用这个模拟的方法。这可能吗?任何帮助将不胜感激。
此致
编辑:我已经在我的测试中尝试了 Mockito 的间谍功能:
但是,这会产生运行时错误:
该方法getSysTime()
是公共的和静态的,类MClass
是公共的并且没有任何父类。
java - java.lang.VerifyError:使用 PowerMockRunner 时,在分支处期望堆栈图帧
我在我的项目中将 MRUnit 版本升级到 1.1.0,以使用 ReduceDriver 来测试多个输出。对我的测试进行更改(使其与升级一起使用)后,我收到此错误:
我的测试看起来像这样(特意删除了代码以使其更简洁):
使用@PrepareForTest 时出现错误。请注意,myReducer类没有静态或最终方法。这就是为什么它不包含在 @PrepareForTest 注释中的原因。我的 pom 文件的一部分(我正在使用 maven 进行构建)如下所示:
另请注意,我使用的是 Java 8,并且无法降级到 v7 或 v6,如此处所述:java.lang.VerifyError: Expecting a stackmap frame at branch target
我还尝试在 pom 文件中添加surefire插件,如此处所述: java.lang.VerifyError: Expecting a stackmap frame at branch target 73
在这种情况下,这些解决方案都不起作用。
maven - 为什么 Maven 中央存储库中没有 mrunit 1.1.0 jar
我尝试在一个 Maven 项目中使用 mrunit 测试我的 MapReduce 2 作业。我从 Maven 中央仓库搜索并找到了结果:http ://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.apache.mrunit%22%20AND%20a%3A%22mrunit%22
在上面的链接中,最新的 mrunit 1.1.0 有hadoop1.jar
而hadoop2.jar
不是一个 jar 链接。正是由于这个原因,当我尝试添加相应的依赖项时
运行pom.xml
,mvn package
我得到以下编译错误: Could not find artifact org.apache.mrunit:mrunit:jar:1.1.0 in central (https://repo.maven.apache.org/maven2 ...
任何人都可以帮助解决这个问题吗?提前致谢
java - Mrunit:如何为 MultiOutput 测试设置值比较器
有没有办法设置键/值比较器来测试 mrunit 中的 MultiOutput?
根据我的分析: mrunit 不使用键/值比较器来测试多输出的预期值和实际值的相等性。键/值比较器仅用于单输出键和值比较。
TestDriver类具有用于单输出和多输出的单独方法,用于比较预期结果和实际结果。
hadoop - java.lang.ClassCastException:org.apache.hadoop.io.serializer.WritableSerialization 不能转换为 org.apache.hadoop.io.serializer.Serialization
我正在使用 MRUnit 测试 MultipleOutputs。测试用例因以下消息而失败。
根据我看到的示例,我正在使用以下注释。
作为参考,我添加了用于测试的代码。
错误的堆栈跟踪如下:
为 MRUnit 添加了 POM 依赖项:
Hadoop 版本:2.4.1 环境:Windows 7 - 64 位
如果有人遇到过这个问题,请帮忙。