首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerMockito错误

PowerMockito错误
EN

Stack Overflow用户
提问于 2016-09-09 22:21:15
回答 1查看 440关注 0票数 0

需要快速的帮助。我正在尝试编写一个测试类,并得到以下错误:“无法解决方法.thenreturn(org.apache.kafka.clients.producer)”

代码语言:javascript
复制
@Test
public void testPublishData_Success() throws java.lang.Exception {
    when(GetPropValues.getPropValue(PublisherConstants.ATMID)).thenReturn("ATM");
    when(GetPropValues.getPropValue(PublisherConstants.DATA_SOURCE)).thenReturn("PCE");

    ReadAndWriteFiles mockFiles = Mockito.mock(ReadAndWriteFiles.class);
    PowerMockito.whenNew(ReadAndWriteFiles.class).withNoArguments().thenReturn(mockFiles);
    Mockito.when(mockFiles.getAllFiles()).thenReturn("someValue");

    KafkaProducer mockProducer = Mockito.mock(KafkaProducer.class);
    PowerMockito.whenNew(KafkaProducer.class).withAnyArguments().thenReturn(mockProducer);

    producer.publishData(null, "Test", "Data1");
}

Powermockito可以返回ReadAndWriteFiles.class对象,但它正在为KafkaProducer.class抛出一个错误。在线

代码语言:javascript
复制
PowerMockito.whenNew(KafkaProducer.class).withAnyArguments().thenReturn(mockProducer);

还有其他方法可以解决这个问题吗?如有任何建议,将不胜感激。

注意: KafkaProducer.class不是自定义类,而是apache库的内部类。

主要代码如下所示

代码语言:javascript
复制
KafkaProducer<String, String> producer = new KafkaProducer<String, String>(props);
            InputData inputMessage;
            try {
                inputMessage = populateData(timeStamp, dataCategory, data, atmId, topic);
                ReadAndWriteFiles readerWriter = new ReadAndWriteFiles();
                File[] directory = readerWriter.getAllFiles();
                if (directory != null && directory.length > 0) {
                    if (connectionSet && !publishingData) {
                        sendDataFromFiles(producer, directory);
                        publishingData = false;
                    }
                } else {
                    producer.send(keyedMsg, new KafkaResponseHandler(inputMessage));
                }

            } catch (IOException e) {

            }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-09 22:34:51

我认为错误是

代码语言:javascript
复制
KafkaProducer mockProducer = Mockito.mock(KafkaProducer.class);
PowerMockito.whenNew(ReadAndWriteFiles.class).withAnyArguments().thenReturn(mockProducer)

我认为返回的值应该是ReadAndWriteFiles类的模拟,而不是KafkaProducer

代码语言:javascript
复制
ReadAndWriteFiles readMock = Mockito.mock(ReadAndWriteFiles.class)
PowerMockito.whenNew(ReadAndWriteFiles.class).withAnyArguments().thenReturn(readMock)

Mockito.when(readMock.getAllFiles()).thenReturn(anArrayOfFiles);

thenReturn方法的签名如下

代码语言:javascript
复制
OngoingStubbing<T>  [More ...] thenReturn(T value);

因此,您是用来返回一个ReadAndWriteFiles的,您应该返回同一个类的一个对象

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

https://stackoverflow.com/questions/39420483

复制
相关文章

相似问题

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