我有以下简单的代码。我有一个类 (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());
}
}
原文由 ViV 发布,翻译遵循 CC BY-SA 4.0 许可协议
确保将
@RunWith(PowerMockRunner.class)
添加到班级的顶部。::edit:: 两年后……
永远不要使用 PowerMockito,你不需要。
如果你确实需要,你很可能违反了 SOLID 原则,你的设计是错误的。
改为修复您的设计。