I Methode in Java-Klasse haben:Erwartung benutzerdefinierte Ausnahme statt Null-Zeiger-Ausnahme während junit Test
@Context
UriInfo uriInfo;
public void processRequest(@QueryParam ("userId") @DefaultValue("") String userId)
{
String baseURI = uriInfo.getBaseUri().toString();
if(userId == null)
{
//UserIdNotFoundException is my custom exception which extends Exceptition
throw new UserIdNotFoundException();
}
}
Wenn ich junit Prüfung des oben genannten Verfahrens erwartet für UserIdNotFoundException bin, wenn userId Parameter Null ist, erhalte ich die folgende Assertionsfehler: expected an instance of UserIdNotFoundException but <java.lang.NullPointerException> is java.lang.NullPointerException
.
@Test
public void testProcessRequest_throws_UserIdNotFoundException()
{
expectedException.expect(UserIdNotFoundException.class);
processRequest(null);
}
Meine benutzerdefinierte Ausnahmeklasse:
public class UserIdNotFoundException extends Exception
{
public UserIdNotFoundException()
{
}
public UserIdNotFoundException(String message)
{
super(message);
}
}
Wie kann ich meine Implementierung schlagen Null Zeiger Ausnahme vor meiner Prüfung. Ich habe keine der String-Methoden auf userId aufgerufen.Oder ich verstehe deinen Standpunkt nicht. Auch nehme ich userId als Query Param von der URL. Es ist nur möglich, dass es sich um einen Null-Check handelt. – Ashley
Sie müssten die Implementierung für processRequest veröffentlichen, damit ich das für Sie buchstabieren kann. Eine bessere, lehrreichere Idee könnte darin bestehen, den Prozess in einem Debugger zu durchlaufen. Setzen Sie einen Haltepunkt in der ersten Zeile von processRequest und sehen Sie, wie das beobachtete Verhalten nicht Ihren Erwartungen entspricht. – duffymo
Ich debuggte es wie Sie vorgeschlagen. Der Fehler wurde in der Zeile uriInfo.getBaseUri(). ToString() angezeigt.So stelle ich diese Zeile nach der if-Prüfung ein. Der Test zeigt jetzt einen grünen Balken. Aber ich habe den Grund immer noch nicht verstanden. – Ashley