`

关于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...

    testNG单元测试Demo

    TestNG是一款功能强大的Java测试框架,它为开发者提供了更加灵活和功能丰富的单元测试、集成测试以及端到端测试。这个“testNG单元测试Demo”旨在帮助学习者掌握如何使用TestNG进行测试编写和执行。 TestNG的核心...

    testNG单元测试学习总结

    ### TestNG单元测试学习总结 #### 一、TestNG框架简介 **1.1 概念** TestNG(Test Next Generation)是一个高级测试框架,它继承了JUnit与NUnit的优点,并在此基础上添加了许多新的功能。TestNG是一个开源的、...

    TestNG框架使用

    这篇博文将深入探讨如何使用TestNG进行单元测试和集成测试。 1. **TestNG基本概念** TestNG允许测试用例以注解的方式定义,如`@Test`,`@BeforeMethod`,`@AfterMethod`等。这些注解简化了测试代码的编写,并提供...

    Httpclient+testng接口测试小例子

    TestNG是一款强大的测试框架,不仅支持单元测试,还支持集成测试和端到端测试。它提供了灵活的测试配置,如测试套件、测试组、依赖关系、并行执行等,以及丰富的报告功能,使测试过程更加高效。 在"Httpclient+...

    spring集成TestNG与Mockito框架单元测试方法.pdf

    Spring集成TestNG与Mockito框架单元测试方法的文档详细介绍了如何在Java Spring项目中,利用TestNG和Mockito框架进行单元测试。这种测试方法可以帮助开发者快速上手单元测试,并确保代码质量。文档涉及了多个方面,...

    单元测试TestNG工具(jar)

    总的来说,TestNG为Java开发者提供了一个全面的测试解决方案,通过与Eclipse IDE的集成,它极大地提高了测试的效率和质量。无论是简单的单元测试还是复杂的集成测试,TestNG都能胜任,并且其丰富的功能和良好的可...

    testng测试报告模板BeautifulReport.7z

    总而言之,这个压缩包提供了一套完整的解决方案,帮助TestNG用户生成美观且定制化的测试报告,提升测试过程的专业性和效率。通过深入理解和运用这些资源,你可以更好地管理和优化你的测试框架,确保测试过程的透明度...

    单元测试框架 TestNG1

    单元测试框架 TestNG1 在 Java 开发领域,单元测试是必不可少的一部分,而 TestNG ...TestNG 是一个功能强大、灵活、可扩展的单元测试框架,能够满足 Java 开发人员的需求,为他们提供了一个高效的单元测试解决方案。

    ReportNG报表显示中文乱码和TestNG显示中文乱码实力解决办法-附件资源

    ReportNG报表显示中文乱码和TestNG显示中文乱码实力解决办法-附件资源

    testng-测试

    TestNG 是一个强大的Java测试框架,它为开发者和测试人员提供了丰富的功能,以进行更高效、更灵活的单元测试、集成测试以及端到端测试。TestNG 的设计灵感来源于JUnit,但它引入了许多新特性,使其在功能上超越了...

    单元测试框架-TestNG-的eclipse插件

    单元测试框架TestNG的eclipse插件安装说明: 本资源包含org.jtester.plugin_0.2.2.jar和org.testng.eclipse_6.1.1.20110713_1401.7z。将org.testng.eclipse_6.1.1.20110713_1401.7z解压缩后得到的文件org.testng....

    单元测试 框架 testng6.8

    单元测试 框架 testng6.8

    基于TestNG+Mockito及自动装配注解的Spring MVC集成测试

    Mockito是一个流行的Java单元测试框架,用于创建和管理模拟对象(mock objects)。在集成测试中,我们可能不希望依赖于真实的数据库或外部服务,这时Mockito可以帮助我们模拟这些依赖,以便专注于测试目标代码的行为...

    java+selenium+maven+testng自动化测试框架实例(实际项目)

    这个实例项目展示了如何将这四个强大的工具集成为一套完整的自动化测试解决方案。 **Java**: Java是一种广泛使用的面向对象的编程语言,以其跨平台的特性闻名,非常适合编写自动化测试脚本。在自动化测试中,Java...

    selenium+testng页面测试

    【标题】"selenium+testng页面测试"涉及的核心知识点主要围绕自动化测试工具Selenium以及测试框架TestNG展开,同时也提到了报告生成和错误处理机制。以下是对这些知识点的详细阐述: 1. **Selenium**: Selenium 是...

    spring集成TestNG与Mockito框架单元测试方法

    通过这样的方式,Spring、TestNG和Mockito共同构建了一套完整的单元测试解决方案,能够有效地测试Spring应用中的各个组件,确保代码的健壮性和可维护性。请参考提供的PDF文件以获取更详细的信息和示例代码。

    testng测试ecplise插件

    TestNG是一款功能强大的测试框架,尤其在Java世界中被广泛应用于单元测试和集成测试。它提供了许多优于JUnit的功能,如并行测试、测试分组、依赖性管理等,使得测试工作更加高效和灵活。Eclipse作为流行的Java开发...

Global site tag (gtag.js) - Google Analytics