Mit Mockito Annotationen mit spring
Bin ich mit Frühling in meiner Anwendung, und ich will schreiben von unit-tests für alle meine Klassen. Ich nenne nur wenige externe webservices aus meiner Anwendung, und ich möchte, um Sie zu verhöhnen mit Mockito, da ich nur testen will, meine Funktionalität.
Können sagen, ich habe das folgende Szenario
Dies ist meine webservice-Schnittstelle
public interface MyWebService {
public String getSomeData(int id);
}
Ich den oben genannten Dienst diese Weise
public interface MyService {
int doSomethingElse(String str);
}
public class MyServiceImpl implements MyService {
private MyWebService myWebService;
int doSomethingElse(String str) {
.....
myWebService.getSomeData(id);
...
}
}
public interface MyService1 {
Stirng methodToBeTested();
}
public class Class1 implements MyService1{
@Resource
private MyService myService;
public Stirng methodToBeTested() {
myService.doSomethingElse("..");
}
}
Schrieb ich die uint-Testfall, wie unten beschrieben. Ich bin Spionage MyService hier so zu laufen, das Gerät zu testen.
public class class1Test {
@Spy
MyService myService;
@Resource
@InjectMocks
Class1 class1;
public void setUPTest() {
MockitoAnnotations.initMocks(this);
Mockito.doReturn(123).when(myService).doSomethingElse("someString");
}
@Test
public void methodToBeTestedTest() {
this.setUPTest();
...
class1.methodToBeTested();
}
}
Wenn ich den test ausführen, was ich sehe, ist, dass, bekomme ich den Wert aus der webservice statt, was ich schon erwähnt beim stubbing.
Kann mir jemand helfen mit diesem?
- Siehe auch stackoverflow.com/questions/2457239/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich löste dies durch die Verwendung von spring java config. Ich streckte meine Standard-config-Datei in meine test config-Datei.
Nun meine test-Klasse geht so
Einen
@Spy
verwendet wird, um auszuspionieren, was passiert beim Aufruf von services (und nützlich, um zB. die für die Geltendmachung der Anwesenheit oder Abwesenheit von transitiven Methodenaufrufe), was Sie wollen, ist die@Mock
Anmerkung:Dazu führen, alle
myService
Methoden null zurückgeben, bar diejenigen, die Sie überschreiben mitdoReturn
/when
.Übrigens eher als Berufung
setUpTest()
aus dem test-Methoden, sollten Sie kommentieren es mit@Before
.Cheers,
Ersetzen zu Bean mit mock in einigen Tests Springockito oder besser Springockito-Anmerkungen.
Etwas wie dies funktionieren sollte:
}
Meinst du anyString() eher als "classextender" in Ihrem
setUp
Methode? Dies kann aucheq("someString")
wenn Sie ruft Ihre Methode mit einem bestimmten string.Aus meinem Verständnis von Mockito ich nicht verwenden, Spione, da Sie wahrscheinlich zeigen Sie eine Klasse design-Problem. Warum gehst du nicht
@Mock
ganzMyService
; und so@Spy
. Alle Anrufe an die ws kann dann einfach verspottet mit den traditionellen non-spy-Werkzeuge.Geändert,
Sollte dies passt Ihren Bedarf:
Siehe auch die offizielle doc.