在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中,断言的工作方式不同。以下是映射器类的测试方法:
@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/