У меня есть следующий простой код. У меня есть класс (TestClass), и я хочу проверить "someMethod". Существует внешний статический метод, который вызывается моим "someMethod". Я хочу, чтобы Powermock статический метод возвращал мне какой-то фиктивный объект. У меня есть @PrepareForTest (ExternalClass.class) в начале, но когда я его выполняю, он дает ошибку:
Класс ExternalClass не подготовлен к тестированию.
Чтобы подготовить этот класс, добавьте класс в аннотацию '@PrepareForTest'
.
Если вы не используете эту аннотацию, добавьте аннотацию на уровне класса или метода.
Пожалуйста, помогите мне указать, что не так, как я использовал @PrepareForTest
@RunWith(PowerMockRunner.class)
@PrepareForTest(ExternalClass.class)
public class xyzTest {
@Mock
private RestTemplate restTemplate;
@Mock
private TestClass testClass;
@BeforeClass
private void setUpBeforeClass() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testSuccessCase() {
Boolean mockResponse = true;
ResponseEntity<Boolean> response = new ResponseEntity<Boolean>(mockResponse, HttpStatus.OK);
SomeClass someClass = new SomeClass("test", "1.0.0", "someUrl", "someMetaData");
PowerMockito.mockStatic(ExternalClass.class);
Mockito.when(restTemplate.postForEntity(any(String.class), any(String.class), eq(Boolean.class))).thenReturn(response);
Mockito.when(ExternalClass.getSomeClass(any(String.class))).thenReturn(someClass);
Boolean result = testClass.someMethod("test");
Assert.isTrue(result);
Mockito.verify(restTemplate, times(1)).postForObject(any(String.class), any(String.class), any());
}
}