2016-03-29 18 views
0

Die DAOClass.makeDBConnection() -Methode gibt die Datenquelle zurück, die im Application Server (Jboss) konfiguriert wurde (mithilfe von Lookup). Sie müssen einen Junit-Testfall für dieses Szenario implementieren.unterdrückt NullPointerException in Mockito?

Mit Mockito, getestet die DAO-Methode wie folgt. Da die Datenquelle (wie erwartet) nicht gefunden werden kann, gibt sie NullPointerException zurück. Wie behandelt man NullPointerException und gibt die Verbindung, die ich unter Code erstellen, zurück? ODER gibt es ein anderes besseres Einheitentestframework, das dieses Szenario behandelt?

Antwort

0

Mockito kann statische Methoden nicht so nennen, wie Sie es haben; Es funktioniert effektiv durch dynamisches Überschreiben aller Methoden über eine generierte Unterklasse (Proxy).

Sie müssen eine Wrapperklasse um statische Methoden schreiben, die Sie maskieren möchten, andernfalls den Code umwandeln, um den statischen Aufruf zu vermeiden, oder ein Tool wie PowerMock verwenden, um den Bytecode Ihres Systems zur Laufzeit neu zu schreiben.

+0

Ich frage mich, wie statische Methodenaufrufe das Problem verursachen? Selbst wenn ich ein Objekt von DAOClass erzeuge und die Methode makeDBConnection() aufruft, wird immer noch NullPointerException ausgelöst. – Kumar

+0

Wenn Sie sagen, "selbst wenn ich ein Objekt von DAOClass erstellen und makeDBConnection() -Methode aufrufen", ist die Methode immer noch statisch? Oder hast du es geändert? –

+0

Basierend auf der Namenskonvention ging ich davon aus, dass Sie 'makeDBConnection' für die DAOClass-Klasse selbst aufgerufen haben, keine Instanz, also nahm ich an, dass es statisch war. Daher geht es bei Ihrem Problem nicht darum, die NullPointerException zu vermeiden oder zu unterdrücken. Es überarbeitet Ihren Test, sodass Sie Erwartungen an Objektinstanzen festlegen und diese Objektinstanzen in Ihren Test einfügen. –

Verwandte Themen