1,Testng生成报告乱码解决方案
乱码是程序编码不统一,比如java源代码是utf-8,编译是gbk,这时会乱码。
如果源代码utf-8,编译utf-8,默认会生成gbk格式的报告,ant配置testng标签里加<jvmarg value="-Dfile.encoding=UTF-8"/> ,具体build文件配置如下:
<project name="AntTest" default="run" basedir=".">
<echo message="import libs"/>
<path id="run.classpath">
<fileset dir="D:/Program Files/Extralib"> <!-- 项目需要引入的jar包所在目录 -->
<include name="*.jar"/>
</fileset>
</path>
<taskdef name="testng" classname="org.testng.TestNGAntTask" classpathref="run.classpath"/>
<!-- 默认target是run,运行ant命令直接执行run -->
<echo message="The base dir is: ${basedir}"/>
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile" depends="clean">
<!-- 编译java文件依赖clean -->
<mkdir dir="build/classes"/>
<javac srcdir="src" encoding="GBK" destdir="build/classes" classpathref="runpath"/> <!-- 因为我的代码编码是GBK,所以编译也用GBK -->
</target>
<path id="runpath">
<path refid="run.classpath"/>
<pathelement location="build/classes"/>
</path>
<target name="run" depends="compile">
<testng classpathref="runpath" outputDir="test-output" haltOnfailure="true" useDefaultListeners="false" listeners="org.uncommons.reportng.HTMLReporter,org.uncommons.reportng.JUnitXMLReporter,org.testng.reporters.FailedReporter">
<xmlfileset dir="${basedir}\src" includes="testng.xml"/>
<sysproperty key="org.uncommons.reportng.title" value="自动化测试报告"/>
<jvmarg value="-Dfile.encoding=UTF-8"/> <!-- 定义生成报告的编码 -->
</testng>
</target>
</project>
所以testngXslt转换后生成报告的目录expression不能用${testreport.dir}而是${basedir}/testreport/
<target name="transreport">
<xslt in="${testreport.dir}/testng-results.xml" style="${testreport.dir}/testng-results.xsl" out="${testreport.dir}/testreport.html ">
<param name="testNgXslt.outputDir" expression= "${basedir}/testreport/" />
<classpath refid="run.classpath" />
</xslt>
</target>