java - 在MRUnit中测试特定异常

标签 java hadoop mapreduce mapper mrunit

在TestNG(或JUnit)中,这很简单。像这样:

@Test(expectedExceptions = NullPointerException)
public void test() throws NullPointerException {
    String x = null;
    String y = "y";
    Assert.assertEquals(x.someMethod(), y);
}

由于String xnull并抛出NullPointerException,因此上述测试将通过。

但是在MRUnit中,断言的工作方式不同。以下是映射器类的测试方法:
@Test(expectedExceptions = Data.InvalidDataException.class)
public void testFirstCatch() throws Exception {
    Data data = someData;
    MapDriver.newMapDriver(mapper)
        .withInput(new LongWritable(0), someData)
        .withOutput(someKey, NullWritable.get())
        .runTest();

它接受someData的输入,并期望someKey的输出。但是我需要覆盖一个Try / Catch块,在其中它通过提供不良数据来检查someData的有效性。在这种情况下,似乎甚至没有必要使用.withOutput方法。 MRUnit中是否可以方便地测试Exceptions

最佳答案

只需要做.run();而不是.runTest();即可。希望这对某人有帮助。

关于java - 在MRUnit中测试特定异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37396791/

相关文章:

java - Hadoop:在 MapReduce [Java] 中实现嵌套 for 循环

java - 比较两个集合用于比较两个文本文件的添加、删除、修改

java - 强制 JUnit 子类测试覆盖 @BeforeClass 方法

java - 有没有一种Java技术可以解决类中的重复循环?

sql - 如何动态地从配置单元表中删除分区?

hadoop - 在Spark中按用户ID分组

java - Hadoop map-reduce 操作在写入输出时失败

java - 从 java 连接到 teamcity 并下载构建

python - 读取 block 中的 csv 文件时出现内存不足错误

python - 将 Hadoop 流作业的输出发送到 STDOUT