Как проверить logger.error (String message, Throwable t) в тестовом примере Junit с помощью Mockito - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь проверить метод обратного вызова Kafka onFailure:

     @Override
        public void onFailure(Throwable ex) {
        logger.error("Failure while sending message in kafka.", ex);
            }

My test case code using Mockito. I am setting exception in object of class SettableListenableFuture.



   SettableListenableFuture<SendResult<String, DeserializationResult<EnvelopeExpanded<SpecificRecord>>>> future2 = new SettableListenableFuture<>();
                future2.setException(new Exception("Could not publish to Kafka"));
    Exception ex = new Exception("Could not publish to Kafka");
    verify(logger, times(1)).error("Failure while sending message in kafka.", ex);

Я получаю эту ошибку

  Argument(s) are different! Wanted:
    logger.error(
        "Failure while sending message in kafka.",
        java.lang.Exception: Could not publish to Kafka
    );

    Actual invocation has different arguments:
    logger.error(
        "Failure while sending message in kafka.",
        java.lang.Exception: Could not publish to Kafka
    );

И требуемые, и фактические аргументы совпадают, но все равно выдает ошибку.Кто-нибудь может мне помочь с этим ??

1 Ответ

0 голосов
/ 31 января 2019

System.out.println(new Exception("Could not publish to Kafka").equals(new Exception("Could not publish to Kafka"))) напечатает false

, поэтому

   Exception ex = new Exception("Could not publish to Kafka");
   SettableListenableFuture<...> future2 = new SettableListenableFuture<>();
            future2.setException(ex);
   verify(logger, times(1)).error("Failure while sending message in kafka.", ex);

должно работать

...