1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xiai_fei-beanmock

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 2.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 01:17 0d00108

BeanMock

Расширение Mockito для имитации глубоких полей.

Сценарии использования

Mockito — это популярный инструмент для модульного тестирования в Java. Однако в сценарии, где classA вызывает classB, который вызывает classC, и нужно протестировать classA, возвращая разные результаты для методов classC без имитации classB, есть два основных решения:

  1. Использовать многоуровневые вызовы с помощью отражения (но это может быть громоздко для более глубоких вызовов, и необходимо вручную восстанавливать контекст, чтобы не загрязнять другие тесты, поскольку контекст Spring является глобальным, если только не используется DirtesContext).

  2. Перейти на использование PowerMock.

Для улучшения поддержки таких высокочастотных сценариев было разработано расширение для Mockito и Spring Test, которое поддерживает аннотированное вложение объектов для имитации.

Использование

@RunWith(SpringBeanMockTestClassRunner.class)  //  Использование расширения SpringJUnit4ClassRunner Runner
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class LoginServiceTest {

    @MockBean("userService") // Пометка текущего свойства как целевого bean, который должен быть введен (то есть userService имеет свойство configurationService, которое вводится через Spring)
    private ConfigurationService configurationService;

    @Resource private LoginService loginService;

    @Test
    public void test(){
        Mockito.when(configurationService.userCache()).thenReturn(true);  
        User user = loginService.login();
        assertEquals("cache",user.getSource());
    }

    @Test
    public void testFromDb(){
        User user = loginService.login();
        assertEquals("db",user.getSource());
    }
}

В коде представлен полный пример для запуска. Поскольку связанного кода немного, он не упакован в jar-файл, а предоставляется напрямую в виде исходного кода, который можно использовать, просто ссылаясь на него.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/xiai_fei-beanmock.git
git@api.gitlife.ru:oschina-mirror/xiai_fei-beanmock.git
oschina-mirror
xiai_fei-beanmock
xiai_fei-beanmock
master