Я пытаюсь выполнить тестирование класса с помощью EasyMock. Чтобы упростить ситуацию, я привел пример ниже. Я хочу, чтобы экземпляр StringBuilder был заменен экземпляром EasyMock во время тестирования. (Поскольку это не функциональность StringBuilder, которую я хочу протестировать.) К сожалению, это не работает в приведенном ниже примере. В других тестах у меня есть обходное решение, устанавливая переменные экземпляра с экземпляром EasyMock, но в этом примере я не могу этого сделать, потому что это объект, созданный локально, который мне интересен.Как заменить мои экземпляры Easymock
Кто может мне помочь?
Класс для тестирования:
package example.easymock
public class Example {
public String exampleMethod() {
StringBuilder string = new StringBuilder();
string.append("hello");
return string.toString();
}
}
Класс тестирования:
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 может создавать макет конструкторов классов. Это возможно * с PowerMock. – dav1d
@ dav1d черт возьми, эта вещь мощная, правда. – Deltharis
Просто добавьте, как это сделать с помощью TestNG + PowerMock + Mockito incase полезно: Подготовьте класс, который вы хотите протестировать: '' @PrepareForTest (SomeService.class) ', а затем просто« макет »конструктора:' whenNew (Date . .class) .withNoArguments() thenReturn (сейчас); ' – dav1d