我試圖建立一個(gè)測試的ClienteController.java,它使用ClienteService.java的是使用ClienteRepository.java到Cliente.class我正在使用mvn test命令運(yùn)行測試。所以我試圖使用WebMvcTest將測試隔離到 web 層。我正在關(guān)注此示例,該示例無需堆棧上的存儲(chǔ)庫(測試 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; }}客戶端服務(wù).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貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
請參閱文檔:
使用此注釋將禁用完全自動(dòng)配置,而是僅應(yīng)用與 MVC 測試相關(guān)的配置(即@Controller、@ControllerAdvice、@JsonComponent、Converter/GenericConverter、Filter、WebMvcConfigurer 和 HandlerMethodArgumentResolver bean,但不應(yīng)用 @Component、@Service 或 @Repository bean )。
特別是,@Service
bean 沒有被配置。假設(shè)僅@WebMvcTest
用于測試 mvc 層,其他一切都應(yīng)該被模擬。您應(yīng)該ClienteService
單獨(dú)模擬您的和測試,可能使用單元測試?;蛘撸?code>@SpringBootTest如果您想配置整個(gè)應(yīng)用程序,您可以使用,或者您可以簡單地@Import
使用缺少的服務(wù)。
添加回答
舉報(bào)
0/150
提交
取消