操作系统:windows xp
记录下以备以后自己查阅。
1.正确配置jre路径,否则在执行ant的<javac>时会出现“Unable to find a javac compiler Perhaps JAVA_HOME does not point to the JDK”错误,配置方法:
Eclipse菜单-Run-External Tools-External Tools Configurations,
会出现一个专门配置你build.xml的面板,选择需要配置的build.xml文件,选择右侧JRE标签,在Seperate JRE的后面,点击Installl JREs的按钮,在新弹出的面板中,点击ADD,增加一个新的JRE,在设置其(jre home directory)路径的时候,请设置为jdk的目录,点OK,最后别忘了点 Apply(应用)
2.在编译测试源码时,要将被测源码编译过的class路径加到<classpath>中,否曾会出现如下类似错误
[javac]D:\Banyan\Parameters\Parameterstest\Parameters\Parameters1Test.java:10: 找不到符号
[javac] 符号: 类 Parameters1
添加例子:
<property name ="run.javaclass" value ="bin"></property> bin为被测源码编译后的class文件所在目录。
<target name="compiletest" depends="init">
<javac encoding="GBK" destdir ="${run.testclass}" srcdir ="${test.srcpath}" debug="yes">
<classpath >
<pathelement location="${run.javaclass}" />
</classpath>
</javac>
</target>
3.要将junit.jar包和被测源码编译后的class的路径一起加入到<junit>标签的<classpath>中,否则在执行ant的<junit>时,会junit时会出现以下类似问题:
java.lang.ClassNotFoundException: Parameters.Parameters1Test
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
添加方法如下:
<property name ="run.javaclass" value ="bin"></property>
<property name ="classes.junit.dir" value ="D:\eclipse\plugins\org.junit4_4.5.0.v20090824\junit.jar"></property>
<junit printsummary="no" haltonfailure="no">
<classpath >
<pathelement location="${classes.junit.dir}" />
<pathelement location="${run.javaclass}" />
</classpath>
.........
</junit>
4.问题描述:
1)被测源代码和测试源代码在同一个包不同目录下;
2)想通过ant批处理后达到编译后的class文件也不在同一个目录。
<!--基本目录配置-->
<property name ="run.javaclass" value ="bin"></property>
<property name ="run.testclass" value ="test"></property>
<property name ="java.srcpath" value ="src"></property>
<property name ="test.srcpath" value ="Parameterstest"></property>
<!--被测源码从java.srcpath源目录编译到run.javaclass目录-->
<target name="compilejava" depends="init">
<javac encoding="GBK" destdir ="${run.javaclass}" srcdir ="${java.srcpath}" />
</target>
<!--测试源码从test.srcpath源目录编译到test.srcpath目录,记得编译时把被测源码编译后的class文件包含进来-->
<target name="compiletest" depends="init">
<javac encoding="GBK" destdir ="${run.testclass}" srcdir ="${test.srcpath}" debug="yes">
<classpath >
<pathelement location="${run.javaclass}" />
</classpath>
</javac>
</target>
5.生成报告,以xml格式输入,生成html展现文档
<junit printsummary="no" haltonfailure="no">
<classpath >
<pathelement location="${classes.junit.dir}" />
<pathelement location="${run.javaclass}" />
</classpath>
<formatter type="xml"/>
<batchtest fork="yes"todir="${report.xml}">
<fileset dir="${run.testclass}" />
</batchtest>
</junit>
<junitreport todir="${report.html}">
<fileset dir="${report.xml}">
<include name="*.xml"/>
</fileset>
<report format="frames" todir="${report.html}"/>
</junitreport>