`

关于Idea testng单元测试乱码的解决

 
阅读更多
问题
    我是使用intellij idea的,项目使用UTF-8编码,但发现一个奇怪的乱码问题,病征如下:
  • 执行public static void main(){}的程序时,打印的中文是正常的;
  • 执行单元测试用例(testng),打印出的中文却是乱码的;
  • 使用Maven的命令执行测试用例,中文显示出是正常的(注:Maven执行的中文乱码解决,参见:http://budairenqin.iteye.com/blog/1336314


分析
  
   1)由于执行main()是正常的,而执行测试用例却是错误的,说明compile是没有问题的,否则main()执行时就不会正常显示中文了,因此可以不去管compile的VM参数(注:如果是compile期出了问题,则需要为javac设置"-encoding UTF-8 "参数,在idea中,是通过ctrl+alt+s-compiler>java compiler->additional command line parameters设置);

   2)main()执行正常,说明通过java运行代码的编码是正常的。通过Maven执行单元测试也是正常的,说明通过Maven显示给testng指定了编码,单元测试就正常了。现在直接通过idea调用testng执行测试用例就乱码了,所以问题应该出在idea没有正确给testng执行器传递正常的项目编码,因此乱码就产生了。在idea中运行测试用例时,其命令可以通过控制台输出的命令查看:
引用

...
com.intellij.rt.execution.application.AppMain org.testng.RemoteTestNGStarter
...

   所以,我推测问题应该是出在org.testng.RemoteTestNGStarter上,它执行测试用例时,编码使用了系统默认的GB2312,而没有正确地采用UTF-8.

解决

    1)问题清楚了,首先想到的是有没有办法显示给org.testng.RemoteTestNGStarter指定编码类型呢,我尝试通过更改测试的运行配置来设置VM参数:
    Run->Edit configuration->TestNG->对应的测试用例,添加VM参数:


   
    设置后再执行测试用例,发现还是乱码!


    2)那没有辙了,我只是使出杀手锏--更改idea的启动VM参数了:
    
    到<idea_home>\bin下找到idea64.exe对应的idea64.exe.vmoptions(注:如果你使用idea.exe启动idea,则去改idea.exe.vmoptions),打开之:
-Xms128m
-Xmx1024m
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=96m
-XX:+UseCodeCacheFlushing
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Dfile.encoding=UTF8

   添加如上的
引用
-Dfile.encoding=UTF8
在末尾,重新启动idea,运行测试用例,终于看到我梦寐以求的正常中文了:


  • 大小: 90.9 KB
  • 大小: 114.1 KB
分享到:
评论
1 楼 bbchnique 2015-08-11  
   有帮助,写得好!

相关推荐

    maven testng 报告中文乱码(csdn)————程序.pdf

    在进行自动化测试时,我们经常会使用Maven和TestNG结合来组织和执行单元测试或集成测试。然而,当测试报告中包含中文字符时,可能会出现乱码问题,这对于阅读和理解测试结果带来了困扰。本文将深入探讨Maven TestNG...

    VBS定时执行idea程序的Testng文件的方法

    VBS定时执行idea程序的Testng文件的...使用VBS脚本来定时执行idea程序的Testng文件的方法可以解决Windows环境下cmd命令行执行TestNG文件时jar包路径问题。该方法可以在实际工作中发挥很大的作用,提高工作效率和质量。

    修复ReportNG中文乱码问题

    如果你是在使用Selenium、TestNG等测试框架时集成ReportNG,也需要检查这些框架的配置。确保它们在生成日志或报告时使用了正确的编码。 6. **日志输出**: 除了报告本身,还要考虑日志文件的编码。如果你的日志中...

    API自动化解决方案[开源项目]基于RestAssured的接口自动化测试框架完美版.docx

    传统的单元测试和集成测试虽然可以检测到一部分问题,但对于API而言,还需要更专门化的测试策略来确保它们能够在各种情况下表现一致。 #### RestAssured:一款用于测试RESTful API的强大工具 RestAssured是一款专...

    xmljava系统源码-PatatiumAppUi:基于appium+java的APPUI自动化测试框架

    的开源自动化测试框架,该框架结合了testng,selenium,webdriver,jxl,jodd-http 等工具。该框架基于页面对象模型(POM)架构,实现了关键字驱动技术,数据驱动,无需掌握多少编程知识即可编写脚本,同时实现了数据与...

Global site tag (gtag.js) - Google Analytics