java – 测试时的spring messagesource
作者:互联网
我在我的java配置中定义了消息源:
@Bean(name = "messageSource")
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasenames(
"/i18n/ir/kia/industry/webapp/entity",
"/i18n/ir/kia/industry/webapp/formErrors",
"/i18n/ir/kia/industry/webapp/frontend",
"/i18n/ir/kia/industry/webapp/frontendPages");
return messageSource;
}
它在使用网站和正确显示消息时工作正常,但在尝试编写弹簧测试时:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestContext.class, SpringMVC.class})
@WebAppConfiguration
public abstract class AbstractTestClass {
protected MockMvc mockMvc;
@Autowired
private WebApplicationContext webApplicationContext;
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
}
和一个简单扩展它的测试类,我得到错误找不到基本名称/ i18n / ir / kia / industry / webapp / entity的包.
它在启动tomcat并在jsp文件中使用消息源时工作正常,但在测试时没有运气.我试过在WEB-INF下移动i18n文件夹,但它也没有帮助它.
目标文件夹看起来像这样,请不要告诉我添加i18n文件夹到目标资源…
解决方法:
我设法通过使用弹簧配置文件功能删除消息源基本名称来解决问题.我将消息源部分更改为:
@Bean(name = "messageSource")
@Profile(value = {"dev","prod"})
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasenames(
"/i18n/ir/kia/industry/webapp/entity",
"/i18n/ir/kia/industry/webapp/formErrors",
"/i18n/ir/kia/industry/webapp/frontend",
"/i18n/ir/kia/industry/webapp/frontendPages");
messageSource.setCacheSeconds(5);
return messageSource;
}
@Bean(name = "messageSource")
@Profile("test")
public MessageSource testMessageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
return messageSource;
}
并使用测试单元添加测试配置文件
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestContext.class, SpringMVC.class})
@WebAppConfiguration
@ActiveProfiles("test")
public abstract class AbstractTestClass {
当我能够运行我的测试时,这是一种解决问题的方法.我仍然感到困惑的是,首先出现错误的原因是什么.
某种bug?或者我做错了什么?
标签:java,unit-testing,spring-mvc,spring,spring-test-mvc 来源: https://codeday.me/bug/20190702/1361360.html