我试图建立一个测试的ClienteController.java,它使用ClienteService.java的是使用ClienteRepository.java到Cliente.class我正在使用mvn test命令运行测试。所以我试图使用WebMvcTest将测试隔离到 web 层。我正在关注此示例,该示例无需堆栈上的存储库(测试 Web 层)代码客户端控制器.java@Controllerpublic class ClientesController { private final String view = "clientes"; @Autowired ClienteService clienteService; @GetMapping("/clientes") public ModelAndView clientes() { ModelAndView mv = new ModelAndView(view); mv.addObject("listar", true); mv.addObject("clientes", this.clienteService.listarClientes()); return mv; }}客户端服务.java@Servicepublic class ClienteService { private final ClienteRepository clienteRepository; @Autowired public ClienteService(ClienteRepository clienteRepository) { this.clienteRepository = clienteRepository; } public List<Cliente> listarClientes(){ return clienteRepository.findAll(); }}ClienteREpository.class@Repositorypublic interface ClienteRepository extends JpaRepository<Cliente, Integer> { @Query("SELECT c FROM Cliente c WHERE c.id = ?1") Cliente findOne(Integer clienteId);}客户端控制器测试.java@RunWith(SpringRunner.class)@WebMvcTest(ClientesController.class)public class ClientesControllerTest { @Autowired private MockMvc mockMvc; @Mock private ClienteRepository clienteRepository; @Test public void contexLoads() throws Exception { }}
2 回答
慕码人2483693
TA贡献1860条经验 获得超9个赞
请参阅文档:
使用此注释将禁用完全自动配置,而是仅应用与 MVC 测试相关的配置(即@Controller、@ControllerAdvice、@JsonComponent、Converter/GenericConverter、Filter、WebMvcConfigurer 和 HandlerMethodArgumentResolver bean,但不应用 @Component、@Service 或 @Repository bean )。
特别是,@Service
bean 没有被配置。假设仅@WebMvcTest
用于测试 mvc 层,其他一切都应该被模拟。您应该ClienteService
单独模拟您的和测试,可能使用单元测试。或者,@SpringBootTest
如果您想配置整个应用程序,您可以使用,或者您可以简单地@Import
使用缺少的服务。
添加回答
举报
0/150
提交
取消