In TestNG (oder JUnit) ist es einfach. Geht so etwas wie:Testen für eine bestimmte Ausnahme in MRUnit
@Test(expectedExceptions = NullPointerException)
public void test() throws NullPointerException {
String x = null;
String y = "y";
Assert.assertEquals(x.someMethod(), y);
}
Above Test bestehen wird, da String x
null
ist und eine Nullpointer ausgelöst.
In MRUnit funktioniert die Assertion jedoch anders. Im Anschluss wird ein Testverfahren für eine Mapper-Klasse:
@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();
es einen Eingang mit someData
nimmt und erwartet die Ausgabe mit someKey
. Aber ich muss einen Try/Catch-Block abdecken, in dem die Gültigkeit von someData
überprüft wird, indem schlechte Daten eingegeben werden. In diesem Fall scheint es .withOutput
Methode ist nicht einmal notwendig. Gibt es eine Möglichkeit in MRUnit, bequem nach Exceptions
zu testen?