2016-08-01 3 views
0

Есть ли способ проверить код ниже. Здесь я подключаюсь к базе данных с помощью JNDI. Я новичок в mockito и не получаю способ проверить то же самое.Испытание Junit для конвейера базы данных

@SuppressWarnings("unused") 
public Connection getJNDIConnection() { 
    Connection result = null; 
    try { 
     InitialContext initialContext = new InitialContext(); 
     if (initialContext == null) { 
      LOGGER.info("JNDI problem. Cannot get InitialContext."); 
     } 
     DataSource datasource = (DataSource) initialContext.lookup(jndiName); 
     if (datasource != null) { 
      result = datasource.getConnection(); 
     } else { 
      LOGGER.info("Failed to lookup datasource."); 
     } 
    } catch (NamingException ex) { 
     LOGGER.error("Cannot get connection: " + ex); 
    } catch (SQLException ex) { 
     LOGGER.error("Cannot get connection: " + ex); 
    } 
    return result; 
} 

ответ

0

Конечно, вы можете это сделать, но я думаю, вы должны прочитать документацию самостоятельно. Основные пункты здесь:

InitialContext initialContext = mock(InitialContext.class); 
DataSource dataSource = mock(DataSource.class); 
Connection expected = mock(Connection.class); 

whenNew(InitialContext.class).withNoArguments().thenReturn(initialContext); 
when(initialContext.lookup(jndiName)).thenReturn(dataSource); 
when(initialContext.getConnection()).thenReturn(connection); 

Connection result = intatnceOfCalss.getJNDIConnection(); 

assertSame("Should be equals", expected, result); 

Также вы должны использовать PowerMock для издевательства над конструкторами и статическими методами. Для того, чтобы иметь дело с Logger, просто добавьте этот код:

@BeforeClass 
public static void setUpClass() { 
    mockStatic(LoggerFactory.class); 
    Logger logger = mock(Logger.class); 
    when(LoggerFactory.getLogger(ApplySqlFileIfExistsChange.class)).thenReturn(logger); 
} 

Не забывайте об аннотациях:

@RunWith(PowerMockRunner.class) 
@PrepareForTest({LoggerFactory.class}) 

Попробуйте прочитать данный момент этот документ http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html

+0

я делал то же самое, но его недостаток в когда (initialContext.lookup (jndiName)). thenReturn (DataSource) ;. Я получаю java.lang.reflect.InvocationTargetException. – user3541321

+0

попробуйте @PrepareForTest ({YourClass.class}) –

Смежные вопросы