51Testing软件测试论坛

标题: Ant+testNG,用ant运行遇到中文乱码,怎么处理 [打印本页]

作者: lgh75560    时间: 2016-4-20 16:37
标题: Ant+testNG,用ant运行遇到中文乱码,怎么处理
有个简单的代码,运行Juint和单独运行testng.xml结果是正常的。
Juinit中

driver.get("https://www.baidu.com/");
System.out.println(driver.findElement(By.xpath("//input[@id='su' and @type='submit']")).getAttribute("value"));
Assert.assertTrue(driver.findElement(By.xpath("//input[@id='su' and @type='submit']")).getAttribute("value").equals("百度一下"));


但是放到Ant中,就异常了。郁闷。

代码基本是一样的。
    @Test
    public void GetLinkText(){
        driver.get("https://www.baidu.com/");
        System.out.println(driver.findElement(By.xpath("//input[@id='su' and @type='submit']")).getAttribute("value"));
        Assert.assertTrue(driver.findElement(By.xpath("//input[@id='su' and @type='submit']")).getAttribute("value").equals("百度一下"));
    }

testng配置xml
  1. <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
  2. <suite name="SeleniumWithTestng" allow-return-values="true" preserve-order="true">
  3.     <test verbose="10" name="test" annotations="JDK">
  4.         <classes>
  5.             <class name="com.test.Units.ChineseTest">
  6.             </class>
  7.         </classes>
  8.     </test>
  9. </suite>
复制代码




Ant配置的buid.xml

  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <project basedir="." default="run" name="Selenium demo">
  3.     <echo message="initConfig" />
  4.    
  5.     <echo>Java-Home: ${java.home}</echo>
  6.     <echo>Java-Version: ${java.version}</echo>   
  7.    
  8.     <!--copy file to ${dest.dir}-->
  9.     <property name="dest.dir" value="build" />
  10.     <!--out report to ${dest.report}-->
  11.     <property name="dest.report" value="report" />
  12.     <!--suitconfig-->
  13.     <property name="testng.file" value="ZH.xml"/>
  14.     <property name="full-compile" value="true" />
  15.    
  16.     <!--need to put all jars to a dir-->
  17.     <path id="run.classpath">
  18.         <fileset dir="${basedir}">
  19.                     <include name="libs/*.jar" />
  20.         </fileset>
  21.     </path>
  22.     <target name="init">
  23.         <echo message="work beging" />
  24.         <mkdir dir="${dest.dir}" />
  25.     </target>
  26.    
  27.     <target name="compile" depends="init">
  28.         <echo message="make classes" />

  29.         <javac srcdir="src" destdir="${dest.dir}" encoding="UTF-8" debug="true" fork = "yes" >
  30.                     <classpath refid="run.classpath"/>
  31.         </javac>
  32.     </target>
  33.    
  34.     <taskdef name="testng" classname="org.testng.TestNGAntTask">
  35.         <classpath>
  36.           <pathelement location="libs/testng-6.8.5.jar"/>
  37.         </classpath>
  38.     </taskdef>

  39.     <!--run-->
  40.     <target name="run" depends="compile">
  41.         <testng classpathref="run.classpath" outputDir="${dest.report}">
  42.             <classfileset dir="${dest.dir}" includes="*.class" />
  43.               <classpath>
  44.                 <pathelement path = "${dest.dir}"/>
  45.             </classpath>
  46.             <jvmarg value="-Dfile.encoding=UTF-8"/>   
  47.             <xmlfileset dir="${basedir}" includes="${testng.file}" />
  48.             <sysproperty key="org.uncommons.reportng.title" value="My TestSuits" />
  49.         </testng>
  50.       
  51.     </target>   
  52. </project>
复制代码





是不是ant哪里配置有问题?

运行结果类似这样:



[testng] [Invoker 843627620] Invoking com.test.Units.ChineseTest.GetLinkText
[testng] 百度????



   [testng] FAILED: GetLinkText
   [testng] java.lang.AssertionError
   [testng]     at org.junit.Assert.fail(Assert.java:86)
   [testng]     at org.junit.Assert.assertTrue(Assert.java:41)
   [testng]     at org.junit.Assert.assertTrue(Assert.java:52)
   [testng]     at com.test.Units.ChineseTest.GetLinkText(ChineseTest.java:34)      《==这里是上面的Assert地方


   [testng] The tests failed.



作者: lgh75560    时间: 2016-4-20 17:31
找了一下,既然排查是控制台和ant运行问题,这样就解决了。

在@Test里面加
System.out.println(pro.getProperty("file.encoding"));
//如果不是需要的,则这样
pro.setProperty("file.encoding","utf-8");

不过运行后,整个项目的中文注释都乱码了,要重新加注释,也是麻烦。

[testng] PASSED: GetLinkText




作者: joykao    时间: 2016-4-20 17:47
testng.xml头上加一句<?xml version="1.0" encoding="UTF-8"?>

还有确保你的项目编码格式是utf-8




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2