【发布时间】:2017-09-16 20:05:31
【问题描述】:
我正在测试下面给出的控制器
@Controller
public class MasterController {
@GetMapping("/")
public String goLoginPage(){
return "index";
}
}
我正在关注this Spring 文档来测试我的控制器。 现在,我想通过仅实例化 Web 层而不是文档中给出的整个 Spring 上下文来测试我的控制器。下面是我的代码。
@RunWith(SpringRunner.class)
@WebMvcTest
public class MasterControllerTestWithWebLayer {
@Autowired
MockMvc mockMvc;
@Autowired
MasterController masterController;
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testLoginHome() throws Exception{
mockMvc.perform(get("/"))
.andExpect(status().isOk())
.andExpect(view().name("index"));
}
}
当我运行这个测试时,我得到了错误Unable to find @SpringBootConfiguration,...etc。但我很困惑为什么当我们不希望它实例化它但只想使用 web 层时它要求 Spring 配置。请指出这里发生的事情的正确方向。以及如何解决这个问题。谢谢
【问题讨论】:
-
试试这个@WebMvcTest(controllers = MasterController.class)。并删除这个@Autowired MasterController masterController;
-
@pvpkiran 好吧,那行得通,但为什么不这样呢?
-
您的控制器中是否还有其他依赖项。例如像一个服务类什么的?
-
@pvpkiran 不,猜猜即使我在
@WebMvcTest中给出控制器名称,它仍然无法正常工作? -
尝试将 @SpringBootTest(classes = YourSpringBootClassName.class) 放在 MasterControllerTestWithWebLayer 类之上
标签: java spring-mvc spring-boot spring-test