【发布时间】:2015-04-17 23:32:44
【问题描述】:
我在我的 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();
}
}
和一个简单扩展它的测试类,我得到错误Can't find bundle for base name /i18n/ir/kia/industry/webapp/entity。
在启动tomcat并在jsp文件中使用消息源时它工作正常,但在测试时没有运气。我曾尝试在 WEB-INF 下移动 i18n 文件夹,但也无济于事。
目标文件夹是这样的,请不要告诉我添加 i18n 文件夹到目标资源...
【问题讨论】:
-
SpringMVC.class中有messageSource吗?
-
它在
SpringLocalization.class中,在SpringMVC.class中导入。 messagesource bean 显然已被读取,因为它可以看到其中定义的基本名称。我从中删除了基本名称并且代码可以正常工作,但是测试时有什么问题??! -
好的 - 将资源添加到您的类路径中,测试应该能够找到它们
-
@farrellmr 问题是资源到位。该网站正常运行并查看所有资源。我将添加目标文件夹的图片
标签: java spring unit-testing spring-mvc spring-test-mvc