mvn test 中文乱码

先上解决方案:

1.设置encoding:<argLine>-Dfile.encoding=UTF-8</argLine>,解决读取文件中的中文乱码问题

2.升级maven-surefire-plugin的版本至最新,解决日志输出中的中文乱码问题


问题现象:

mvn有两种情况下的乱码,第一种如下:

我的test,是从一个json文件中读取数据,然后通过test的case会将文件中的数据写入数据库,那么问题来了,我发现写入到数据库的中文乱码。

但是我用JUnit跑时,不会出现这种问题,所以这肯定是mvn test的问题,于是我做了如下配置:

<plugin>  
			    <groupId>org.apache.maven.plugins</groupId>  
			    <artifactId>maven-surefire-plugin</artifactId>  
			    <version>2.5</version>  
			    <configuration>
			    	<forkMode>once</forkMode>
		                <argLine>-Dfile.encoding=UTF-8</argLine><!-- 解决从json中读取测试数据时的中文乱码问题 -->
			    </configuration>  
			</plugin>
关键处在于: <argLine>-Dfile.encoding=UTF-8</argLine>。

好了,现在再用mvn test 测试,后去数据库查看数据中文是正常的。


这时我想输出下每个case的comments,是中文的,于是我用了logger.info(casejson.getString("comments")),问题又来了,控制台输出的测试报告中中文居然又乱码了,我尝试了下system.out.println("中文乱码否?"),它在测试报告中居然也是乱码!我想起我在配置surefire时是随便从网上拷下来的,拷时我还特意看了下发表时间,它是2012年,我并没有升级它的版本,我想先升级下,再找解决方案吧,于是我把它升级到了最新。

<plugin>  
			    <groupId>org.apache.maven.plugins</groupId>  
			    <artifactId>maven-surefire-plugin</artifactId>  
			    <version>2.19.1</version>  
			    <configuration>
			    	<forkMode>once</forkMode>
		                <argLine>-Dfile.encoding=UTF-8</argLine><!-- 解决从json中读取测试数据时的中文乱码问题 -->
			    	</configuration>  
			</plugin>

然后测试报告中文乱码也解决了。
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页