Nicht in der Lage zu verspotten statische Methoden mit Powermock (mit EasyMock)
Möchte ich simulieren Sie eine statische Methode und auch nicht-statische Methoden einer Klasse.
Meine Quelle sieht so aus:
public class XDSUtilityManager
{
private static XDSUtilityManager xdsUtilMgr = new XDSUtilityManager();
private XDSUtilityManager()
{
xdsUtilMgrImpl = new XDSUtilityManagerImpl();
}
public static XDSUtilityManager getInstance()
{
return (xdsUtilMgr == null ) ? new XDSUtilityManager() : xdsUtilMgr;
}
public XMLDocument getXMLDocument(final String absoluteKey, final XDSClient xdsClient)
{
return getXMLDocument(absoluteKey, xdsClient, false);
}
}
Ich möchte mock statische Methode getInstance(). Ich will getInstance (), um mock-Objekt der XDSUtilityManager Klasse. Auch ich möchte mock getXMLDocument() die ist nicht statisch.
Und in meinem Testfall habe ich versucht Folgendes:
XMLDocument xmlDocument = PowerMock.createMock(XMLDocument.class);
XDSUtilityManager xdsUtilityManager = PowerMock.createPartialMock(XDSUtilityManager.class,"getXMLDocument");
PowerMock.mockStaticPartial(XDSUtilityManager.class, "getInstance");
expect(XDSUtilityManager.getInstance()).andReturn(xdsUtilityManager).anyTimes();
expect(xdsUtilityManager.getXMLDocument((String)anyObject(), anyObject(XDSClient.class))).andReturn(xmlDocument).anyTimes();
PowerMock.replay(xdsUtilityManager);
PowerMock.replay(xmlDocument);
Aber die Dinge sind nicht wie erwartet funktioniert. Bitte helfen Sie
InformationsquelleAutor Ramesh | 2013-02-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachste Weg, die ich gefunden habe, dies zu tun ist durch die Verwendung PowerMockito. PowerMockito ist eine Kombination von Mockito und PowerMock, wodurch die Verspottung des statischen Objekten.
Das Muster das ich verwendet habe, ist die Verwendung von mock-Ihre statische
getInstance()
Rückkehr eine Kopie Ihres nicht-statisches Modell, welches du dann erweitern, als normal. Ein Beispiel für die Verwendung PowerMockito wäre:Ihre statischen Aufruf
getInstance()
um das singleton-Objekt zurückgibt, das mock-Objekt instanziiert, die Sie AUCH definieren. Sobald Sie sagen, der statische, was Sie zurück, können Sie weiterhin zu verspotten die nicht-statische Aufrufe als normal.InformationsquelleAutor Walls
Seiner nicht nötig zu nennen
getInstance()
Methode zum erstellen der Instanz vonXDSUtilityManager
.Mit
PowerMockito
, denn Ihr Konstruktor ist privat, Sie müssensuppress the constructor
rufen Sie vor dem erstellen von mock als unten..InformationsquelleAutor Libin