首先,應用程序正在成功編譯和運行。Spring junit測試模板可能不存在
我嘗試在春季啓動時對我的控制器進行單元測試。我的測試控制器的樣子:
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = { Application.class })
@Rollback
@Transactional
@WebMvcTest(PasswordResetController.class)
public class PasswordResetControllerTest {
@Autowired
private MockMvc mvc;
@Test
public void getPasswordForgetView() throws Exception {
this.mvc.perform(get("/password/forget"))
.andExpect(status().isOk());
}
}
有了這個,我得到下面的異常:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template "password-forget-html", template might not exist or might not be accessible by any of the configured Template Resolvers
,如果我調試配置,我看到它那張槽我WebMvcConfig.class
在那裏我點的模板/WEB-INF/templates/
文件夾:
@Configuration
@ComponentScan(basePackages = { "com.tmp" })
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Value("${mail.templates.cacheable}")
private boolean mailTemplatesCacheable;
@Value("${html.templates.cacheable}")
private boolean htmlTemplatesCacheable;
public static final String URL_RESOURCES = "/modules/**";
public static final String PATH_RESOURCES = "/modules/";
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(URL_RESOURCES).addResourceLocations(PATH_RESOURCES);
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
}
@Bean
public TemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setPrefix("/WEB-INF/templates/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("HTML5");
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setCacheable(htmlTemplatesCacheable);
return templateResolver;
}
@Bean
public TemplateResolver mailResolver() {
SpringResourceTemplateResolver result = new SpringResourceTemplateResolver();
result.setPrefix("/WEB-INF/mail/");
result.setSuffix(".html");
result.setTemplateMode("HTML5");
result.setCacheable(mailTemplatesCacheable);
result.setOrder(2);
result.setCharacterEncoding("UTF-8");
return result;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(templateResolver());
templateEngine.addTemplateResolver(mailResolver());
templateEngine.addDialect("java8time", java8TimeDialect());
templateEngine.addDialect("sec", springSecurityDialect());
templateEngine.addDialect("layout", thymeleafLayoutDialect());
return templateEngine;
}
@Bean
public ThymeleafViewResolver viewResolver() {
ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver();
thymeleafViewResolver.setTemplateEngine(templateEngine());
thymeleafViewResolver.setCharacterEncoding("UTF-8");
thymeleafViewResolver.setCache(false);
return thymeleafViewResolver;
}
// Dialect Beans
...
}
是的,該文件夾中有模板。
有什麼建議嗎?感謝的提前
它看起來像'WebMvcConfig'斷章取義的測試工作。嘗試直接將'WebMvcConfig'添加到'@ ContextConfiguration'中。 –
如果我調試它,它會通過WebMvcConfig類 –
'/ WEB-INF/templates /'在類路徑中是否可見? –