Ich versuche, eine Klasse mit EasyMock Einheit testen. Um die Dinge zu vereinfachen, habe ich unten ein Beispiel gemacht. Ich möchte, dass die StringBuilder-Instanz beim Testen durch die EasyMock-Instanz ersetzt wird. (Da es nicht die Funktionalität des StringBuilders ist, die ich testen möchte.) Leider funktioniert das im folgenden Beispiel nicht. In anderen Tests habe ich eine Problemumgehung, indem ich die Instanzvariablen mit einer EasyMock-Instanz festlege, aber in diesem Beispiel kann ich das nicht, da es sich um ein lokal instantiiertes Objekt handelt, das mir wichtig ist.Wie ersetze ich meine Instanzen mit Easymock
Wer kann mir helfen?
Die Klasse getestet:
package example.easymock
public class Example {
public String exampleMethod() {
StringBuilder string = new StringBuilder();
string.append("hello");
return string.toString();
}
}
Die Testklasse:
package example.easymock
import needed classes
public class ExampleTest {
@Test
public void exampleMethodTest() {
StringBuilder stringMock = EasyMock.createMock();
Example example = new Example();
stringMock.append("hello");
EasyMock.expect(stringMock.toString()).andReturn("hi");
EasyMock.replay(stringMock);
example.exampleMethod();
}
}
PowerMock kann tatsächlich Konstruktoren von Klassen vortäuschen. So ist es * mit PowerMock möglich. – dav1d
@ dav1d verdammt, das Ding ist mächtig, wahr. – Deltharis
Um hinzuzufügen, wie man es mit TestNG + PowerMock + Mockito macht, ist es hilfreich: Bereiten Sie die zu testende Klasse vor: '' @PrepareForTest (SomeService.class) 'dann" spotten "Sie einfach den Konstruktor:' whenNew (Date .class) .withNoArguments(). thenReturn (jetzt); ' – dav1d