Почему этот тест EasyMock не проходит?

Привет, у меня есть этот тест ниже, и он дает мне эту ошибку, сбой на проверке ... но я не могу понять, почему.

java.lang.AssertionError: Ошибка ожидания при проверке: отладка (isA (java.lang.Object)): ожидается: 1, фактическое: 0

Код теста такой.

   public void testLogInfo()
   {
      JDBCAppender jdbcAppender = createNiceMock(JDBCAppender.class);
      Logger logger = createNiceMock(Logger.class);
      LogDB logDB = new LogDB(null, null, null, LogDBDriver.ODBC, Level.TRACE);
      logDB.setJdbcAppender(jdbcAppender);
      logDB.setLogger(logger);
      // method call
      logger.info(isA(Object.class));      
      expectLastCall().once();
      // replay
      replay(logger);
      replay(jdbcAppender);
      // verify method call
      logDB.log(Level.INFO, "10", "Server", "admin", "shortext", "longText","className","methodName");
      verify(logger);
   }

person Cristiano Fontes    schedule 22.03.2011    source источник
comment
Похоже, есть ожидаемый, но невыполненный вызов debug(). Ведет ли LogDB какие-либо журналы отладки в любом из сеттеров в дополнение к журналу информации, который вы изначально хотите протестировать?   -  person Christian Semrau    schedule 23.03.2011
comment
Не уверен, что понимаю ваш вопрос... LogDB отвечает за вставку его в базу данных, но, поскольку это макет, в вызове конструктора LogDB нет данных БД, как вы можете видеть выше, может ли это быть проблемой?   -  person Cristiano Fontes    schedule 23.03.2011
comment
LogDB — это тестируемый класс. jdbcAppender и logger являются макетами, и они установлены на экземпляр logDB. Мой вопрос заключался в том, вызывает ли класс LogDB logger.debug() в методе setLogger? Если сообщение об ошибке действительно говорит то, что я думаю, а именно, что logger.debug() был вызван перед вызовом replay(logger), то logDB.setLogger кажется единственным местом, где может быть вызван logger.debug().   -  person Christian Semrau    schedule 23.03.2011
comment
Понял вашу точку зрения, но setLogger — это всего лишь простой метод установки this.x = x; Но я поищу такой звонок где-нибудь еще.   -  person Cristiano Fontes    schedule 23.03.2011


Ответы (1)


Только что узнал, что не так.

Вызов метода LogDB.log не вызывал Logger.info(Object), а вызывал Logger.log(Priority, Object).

Вот почему после повтора состояние было не то, что ожидание одного вызова и получение другого.

person Cristiano Fontes    schedule 23.03.2011
comment
Тогда почему ошибка указывает, что вызов debug() отсутствует, когда logger.info() вызывается в тестовом примере? - person Christian Semrau; 23.03.2011