首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当声明准备就绪时,org.powermock.api.mockito.ClassNotPreparedException

当声明准备就绪时,org.powermock.api.mockito.ClassNotPreparedException
EN

Stack Overflow用户
提问于 2022-04-28 23:39:51
回答 1查看 1.1K关注 0票数 0

我不明白为什么这会显示出来,因为我的测试明确要求PowerMock为它做准备。

代码语言:javascript
运行
复制
@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);的错误。

错误如下:

代码语言:javascript
运行
复制
[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)

我有遗漏什么吗??

EN

回答 1

Stack Overflow用户

发布于 2022-05-06 17:41:22

您可以尝试扩展PowerMockTestCase。就能解决你的问题。

代码语言:javascript
运行
复制
class EncodingAdapterTest extends PowerMockTestCase 

顺便提一句,我建议使用mockito内联而不是Powermock来模拟静态方法或类。因为它比Powermock更容易也更受欢迎。您可以轻松地模拟静态,而不需要过多的注释,如下所示:

代码语言:javascript
运行
复制
try (MockedStatic<AmazonSQSClientBuilder> builder = Mockito.mockStatic(AmazonSQSClientBuilder.class)) {
        builder.when(() -> AmazonSQSClientBuilder.standard())
        .thenReturn("somthing");
}

参考资料:https://www.baeldung.com/mockito-mock-static-methods

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72051320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档