测试 MRUnit 中的特定异常

Testing for a specific exception in 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 中,断言的工作方式不同。以下是映射器的测试方法 class:

@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();。希望这对某人有所帮助。