2011-03-22 4 views
0

안녕하세요, 저는이 테스트를 실패하고 나에게이 오류를주었습니다. 실패는 확인 중입니다 ...하지만 이유는 알 수 없습니다.왜이 EasyMock 테스트가 실패합니까?

java.lang.AssertionError: Expectation failure on verify: debug(isA(java.lang.Object)): expected: 1, actual: 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); 
    } 
+1

예기치는했으나 충족되지 않은 debug() 호출이있는 것처럼 보입니다. LogDB는 원래 테스트하고자하는 정보 로그 외에도 모든 설정 도구에서 디버그 로깅을 수행합니까? –

+0

당신의 질문을 이해할 수 있는지 확실하지 않습니다 ... LogDB는 데이터베이스에 그것을 삽입하는 책임이 있지만 위의 LogDB 생성자 호출에 DB 데이터가 없습니다. 문제가 될 수 있습니까? –

+1

LogDB는 테스트중인 클래스입니다. jdbcAppender 및 logger는 mock이며 logDB 인스턴스로 설정됩니다. 내 질문은 LogLog 클래스가 setLogger 메서드에서 logger.debug()를 호출합니까? 오류 메시지가 실제로 내가 말한 것, 즉 logger.debug()가 replay (logger)를 호출하기 전에 호출되었다고 말하면 logDB.debug()를 호출 할 수있는 유일한 장소 인 것처럼 보입니다. –

답변

2

무엇이 잘못되었는지 알아 냈습니다.

메서드 호출 LogDB.log가 Logger.info (Object)를 호출하지 않고 Logger.log (Priority, Object)를 호출했습니다.

그래서 재생 후 한 종류의 전화가 걸려오고 다른 전화를 받기 때문에 상태가 같지 않았습니다.

+0

그런데 왜 테스트 케이스에서'logger.info()'가 호출 될 때'debug()'에 대한 호출이 빠져 있다고 에러가 표시됩니까? –

관련 문제