Jeesite环境中的单元测试
使用Jeesite框架,并对其src/main/java/com/thinkgem/jeesite/common/utils/StringUtils.java文件进行单元测试。
其中public static String getMessage(String code, Object[] args) 代码内容如下:
/** * 获得i18n字符串 */ public static String getMessage(String code, Object[] args) { LocaleResolver localLocaleResolver = (LocaleResolver) SpringContextHolder.getBean(LocaleResolver.class); HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); Locale localLocale = localLocaleResolver.resolveLocale(request); return SpringContextHolder.getApplicationContext().getMessage(code, args, localLocale); } |
做单元测试时,不能使用常规junit方法,需要使用spring的方式,加载spring容器,注入相关注解,并配置spring-context.xml
具体单元测试代码和xml配置如下:
package com.thinkgem.jeesite.common.utils; import static org.junit.Assert.*; import org.junit.Test;
@RunWith(SpringJUnit4ClassRunner.class) } |
此时进行单元测试还是失败的,需要在spring-context.xml所在位置为src/main/resources/spring-context.xml,在其开始注入注解时加入以下内容
<bean class="com.thinkgem.jeesite.common.utils.SpringContextHolder" lazy-init="false"/> <bean class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver" /> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"> <list> <value>messages</value> </list> </property> <property name="useCodeAsDefaultMessage" value="false"/> <property name="defaultEncoding" value="UTF-8"/> <property name="cacheSeconds" value="5"/> </bean> |
在src/main/resources目录下新增messages_en.properties、messages_zh_CN.properties、messages.properties
其内容分别为
info={0} go to school
info={0}去上学
info={0} hehe
另外需要在pom.xml文件中修改依赖
原 | 新 |
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> |
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> |
此时运行单元测试,结果