2016-09-09 29 views
0

需要快速帮助。我试图写一个测试类,并得到以下错误 “无法解析方法.thenreturn(org.apache.kafka.clients.producer)PowerMockito错误

@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是不是一个自定义类但它的内部来自apa车火花卡夫卡库

主要代码是按以下

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

      } 

回答

0

我认为错误是

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

我想返回的值应该是ReadAndWriteFiles类不是KafkaProducer

一个模拟
ReadAndWriteFiles readMock = Mockito.mock(ReadAndWriteFiles.class) 
PowerMockito.whenNew(ReadAndWriteFiles.class).withAnyArguments().thenReturn(readMock) 

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

4819的签名方法如下

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

所以,你正在使用,以返回ReadAndWriteFiles你shouls返回相同的类

+0

我需要检查,如果我做一些愚蠢的事或没有的对象,让我检查,并得到明天早上回到你身边。并感谢您的帮助Koitoer。 – user3452558

+0

你说得对Koitoer,这是一个愚蠢的错误,我应该抓住我的自我。对不起浪费你的时间,再次感谢你的帮助。 – user3452558