powermockito错误

3phpmpom  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(397)

我需要一个快速的帮助。我正在尝试编写一个测试类,并得到下面的错误“cannotresolve the method.thenreturn(org.apache.kafka.clients.producer)

@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抛出了一个错误。在线

PowerMockito.whenNew(KafkaProducer.class).withAnyArguments().thenReturn(mockProducer);

这项工作还有别的解决办法吗?任何建议都将不胜感激。
注意:kafkaproducer.class不是自定义类,而是ApacheSparkKafka库中的类
主要代码如下

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) {

            }
eanckbw9

eanckbw91#

我认为错误是

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

我认为返回值应该是 ReadAndWriteFiles 非a类 KafkaProducer ```
ReadAndWriteFiles readMock = Mockito.mock(ReadAndWriteFiles.class)
PowerMockito.whenNew(ReadAndWriteFiles.class).withAnyArguments().thenReturn(readMock)

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

签字人 `thenReturn` 方法如下

OngoingStubbing [More ...] thenReturn(T value);

所以你要用 `ReadAndWriteFiles` 应该返回同一类的对象

相关问题