gpt4 book ai didi

java - 测试时使用 spring messagesource

转载 作者:搜寻专家 更新时间:2023-11-01 03:21:50 31 4
gpt4 key购买 nike

我在我的 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;
}

它在使用网站和消息正确显示时工作正常,但在尝试编写 spring 测试时:

@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 文件中使用消息源时它工作正常,但在测试时没有运气。我曾尝试将 i18n 文件夹移动到 WEB-INF 下,但它也无济于事。

目标文件夹看起来像这样,请不要告诉我将 i18n 文件夹添加到目标资源...

enter image description here

最佳答案

我设法通过使用 spring 配置文件功能删除消息源基本名称来解决问题。我将消息源部分更改为:

@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 {

当我能够运行我的测试时,但这是解决问题的一种方法。我仍然对首先出现错误的原因感到困惑。那是某种错误吗?还是我做错了什么?

关于java - 测试时使用 spring messagesource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28558658/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com