ввести боб с реальными параметрами с помощью mockito - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь написать пример модульного теста с mockito, и я хочу внедрить бин с реальными параметрами, а не с mocked.

У этого бина есть некоторые строковые значения, которые считываются из файла .properties.

@Component
public class SomeParameters {

    @Value("${use.queue}")
    private String useQueue;

 }

@RunWith(MockitoJUnitRunner.class)
public class ServiceTest {

    @Mock
    private A a;

    @Autowired
    private SomeParameters someParameters;

    @Before
    public void init() {
        MockitoAnnotations.initMocks(this);

    }

    @Test
    public void testMethod() {
        if(someParameters.getUseQueue==true){
            //do something
        }else{
            /bla bla
        }
    }

Моя главная цель - запустить контрольный пример с реальными сценариями.Я не хочу использовать фиктивные значения.

Таким образом я смог внедрить бин с реальными параметрами.Но это тестовый модуль, а не интеграционный тест.Поэтому я не должен давать applicationContext.Можете ли вы указать мне, как справиться с этой ситуацией?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContextTest.xml"})
public class ServiceTest {

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Если вы хотите использовать реальные свойства, загрузите файл свойств, используя объект Properties, и смоделируйте значение, получая объект Properties.

0 голосов
/ 11 октября 2018

Если вы хотите использовать spring-context , вы должны создать конфигурацию (через xml или java config) для вашего теста и объявить только те компоненты, которые вам нужны. Например

Для настройки свойств просто объявите @TestPropertiesSource("use.queue=someValue"), в противном случае вам нужно прочитать значение из тестовых ресурсов.

PS.также проверьте @ MockBean и @ SpyBean особенно @SpyBean

...