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를 사용하는 방법을 추가하는 것이 도움이됩니다. 테스트 할 클래스를 준비하십시오 :''@PrepareForTest (SomeService.class)'다음으로 생성자를 그냥 "조롱하십시오 :'whenNew (Date .class) .withNoArguments(). then return (now);' – dav1d