junit не смог загрузить значение в папке ресурсов - PullRequest
0 голосов
/ 29 августа 2018

Я использую библиотеку MockitoJUnit для тестирования моего контроллера. Есть некоторые переменные, которые объявлены как:

@Value("${mine.port}")
private Integer port;

при запуске теста не удалось найти значение mine.port в папке ресурсов в виде файла свойств. Мой контроллер не проблема, чтобы работать, но номер порта является нулевым, когда я запускаю свой тест junit контроллера.

Я использовал ниже аннотацию для моего класса:

@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(classes = myControl.class)
@WebAppConfiguration
@AutoConfigureMockMvc

Я использовал приведенный ниже метод в моем тесте junit

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

    mockMvc = MockMvcBuilders
            .standaloneSetup(myController)
            .build();
}
@Test
public void getName() throws Exception {
MockHttpServletRequestBuilder request = 
MockMvcRequestBuilders.get("/service")
            .contentType(MediaType.APPLICATION_JSON_VALUE);
    MvcResult result = mockMvc.perform(request)
            .andExpect(status().isOk()).andReturn(); }

Я запутался, кто-нибудь знает, если мне не хватает некоторых настроек? ТНХ!

1 Ответ

0 голосов
/ 29 августа 2018

Ни одна из указанных аннотаций не запустит контейнер Spring:

@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(classes = myControl.class)
@WebAppConfiguration
@AutoConfigureMockMvc

Чтобы написать тестовый фрагмент, сфокусированный на контроллере, не используйте бегунок Mockito: @RunWith(MockitoJUnitRunner.class) в противном случае вы не можете запустить контейнер Spring. MockitoJUnitRunner для модульных тестов, а не интеграционных тестов.
Чтобы узнать, когда и как написать модульные и интеграционные тесты с Spring Boot, вы можете прочитать этот вопрос .

Вместо этого используйте аннотацию @WebMvcTest с бегуном Spring, например:

import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@WebMvcTest
public class WebLayerTest {
   ...
}

Вы можете положиться на это Руководство по пружине , чтобы получить более подробную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...