Если вы используете standaloneSetup
, вам не нужно запускать его с SpringJUnit4ClassRunner
.Этот бегун ожидает настройки Spring.
Вы можете либо инициировать новую HelloController
себя
например,
public class HelloControllerTest {
private MockMvc mockMvc;
private HelloController helloController = new HelloController();
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.standaloneSetup(helloController).build();
}
@Test
public void testHelloWorld() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/hello")).andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string("hello World"));
}
, либо вы можете позволить Spring сделать это, введя свой WebApplicationContextи построение его с использованием любой конфигурации, необходимой для создания WebApplicationContext
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = MyWebApplicationConfig.class)
public class HelloControllerTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
private HelloController helloController;
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
Или, наконец, если вы используете Spring Boot, вы можете использовать одну из их аннотаций Slice Test,
@RunWith(SpringRunner.class)
@WebMvcTest
public class HelloControllerTest {
@Autowired
private MockMvc mockmvc;
}