我不明白为什么这会显示出来,因为我的测试明确要求PowerMock为它做准备。
@PrepareForTest({AmazonSQSClientBuilder.class})
@RunWith(PowerMockRunner.class)
@PowerMockIgnore({"javax.*", "org.apache.logging.*"})
class EncodingAdapterTest {
...
private AmazonSQSClientBuilder sqsBuilder;
private AmazonSQS sqsClient;
private AmazonSNS snsClient;
private SendMessageResult sqsResult;
private PublishResult snsResult;
@BeforeEach
void setUp() {
sqsClient = PowerMockito.mock(AmazonSQS.class);
PowerMockito.mockStatic(AmazonSQSClientBuilder.class);
AmazonSQSClientBuilder mockBuilder = PowerMockito.mock(AmazonSQSClientBuilder.class);
PowerMockito.when(AmazonSQSClientBuilder.standard()).thenReturn(mockBuilder);
sqsBuilder = PowerMockito.mock(AmazonSQSClientBuilder.class);
}
虽然我一开始就有@PrepareForTest({AmazonSQSClientBuilder.class})
,但它显示了行PowerMockito.mockStatic(AmazonSQSClientBuilder.class);
的错误。
错误如下:
[Ljava.lang.Object;@259661b4
The class com.amazonaws.services.sqs.AmazonSQSClientBuilder not prepared for test.
org.powermock.api.mockito.ClassNotPreparedException:
[Ljava.lang.Object;@259661b4
The class com.amazonaws.services.sqs.AmazonSQSClientBuilder not prepared for test.
at org.powermock.api.mockito.expectation.reporter.MockitoPowerMockReporter.classNotPrepared(MockitoPowerMockReporter.java:29)
at org.powermock.api.mockito.internal.mockcreation.MockTypeValidatorFactory$DefaultMockTypeValidator.validate(MockTypeValidatorFactory.java:37)
at org.powermock.api.mockito.internal.mockcreation.AbstractMockCreator.validateType(AbstractMockCreator.java:10)
at org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator.createMock(DefaultMockCreator.java:49)
at org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator.mock(DefaultMockCreator.java:40)
at org.powermock.api.mockito.PowerMockito.mockStatic(PowerMockito.java:62)
at package.adapters.EncodingAdapterTest.setUp(EncodingAdapterTest.java:76)
我有遗漏什么吗??
发布于 2022-05-06 17:41:22
您可以尝试扩展PowerMockTestCase
。就能解决你的问题。
class EncodingAdapterTest extends PowerMockTestCase
顺便提一句,我建议使用mockito内联而不是Powermock来模拟静态方法或类。因为它比Powermock更容易也更受欢迎。您可以轻松地模拟静态,而不需要过多的注释,如下所示:
try (MockedStatic<AmazonSQSClientBuilder> builder = Mockito.mockStatic(AmazonSQSClientBuilder.class)) {
builder.when(() -> AmazonSQSClientBuilder.standard())
.thenReturn("somthing");
}
https://stackoverflow.com/questions/72051320
复制相似问题