测试 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 x
是 null
并且抛出 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();
。希望这对某人有所帮助。
在 TestNG(或 JUnit)中,这很简单。是这样的:
@Test(expectedExceptions = NullPointerException)
public void test() throws NullPointerException {
String x = null;
String y = "y";
Assert.assertEquals(x.someMethod(), y);
}
以上测试将通过,因为 String x
是 null
并且抛出 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();
。希望这对某人有所帮助。