Eclipse下的ant+java+juni实现注意点

上一篇 / 下一篇  2010-12-16 10:34:40 / 个人分类:单元测试

操作系统: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>


TAG:

 

评分:0

我来说两句

Open Toolbar