2015-11-10 8 views
1

Мне нужно получить имя-фауну экземпляров. Поэтому я построил (упрощенный):getClass of mockito mock

public String getName(Object instance) { 
     return uncapitalize(instance.getClass().getSimpleName(); 
    } 

Что происходит во время тестов, что mock(MyInstance.class) входит в этот метод. Вместо "myInstance" я тогда получаю "testClassName$$MyInstance$$EnhancerByMockito$$...."

Как можно обнаружить, что экземпляр является макетным экземпляром и получает «настоящий» тип?

+1

Я бы попробовать ходить по цепи Суперклассов/суперинтерфейсов, пока не найдете тот, чье имя не содержит «EnhancerByMockito». –

+1

Полезно? http://stackoverflow.com/a/14871765/3788176 –

+0

Спасибо, Энди, именно то, что мне нужно. –

ответ

3

Благодаря @Andy Тернер, я теперь использовать это:

static final String ENHANCER = "$$EnhancerByMockitoWithCGLIB$$"; 

static Class<? extends Object> typeOf(Object instance) { 
    Class<? extends Object> type = instance.getClass(); 
    while(type.getSimpleName().contains(ENHANCER)) { 
    type = type.getSuperclass(); 
    } 

    return type; 
} 
Смежные вопросы