2

基本上,当我执行命令时ant -f mybuild.xml clean junit-TestRunner,我的 java 文件中有很多错误,它会在 junit 导入时出现错误,例如:

    java:6: error: package org.junit does not exist

这是我的 xml 文件的一部分,它在测试编译时给了我错误:

<path id="test.classpath">
   <pathelement location="${build.test.dir}"/>
</path>

<target name="test-compile" depends="test-init">
      <javac srcdir="test" 
      destdir="build\test"
      includeAntRuntime="No"/>
</target>

<target name="junit-TestRunner" depends="test-compile">
  <java classname="org.junit.runner.JUnitCore" 
        classpathref="C:\junit-4.10">
    <arg value="org.example.antbook.junit.SimpleTest"/>
  </java>

  <java classname="org.junit.runner.JUnitCore" 
        classpathref="test.classpath">
    <arg value="org.eclipseguide.persistence.FilePersistenceServicesTest"/>
  </java>
</target>

我假设它找不到我的 junit-4.10.jar 文件所在的目录。我在'classpathref'中改变了它,但仍然给我同样的错误。

有什么建议么?

4

4 回答 4

1

不要放入junit.jar你的$ANT_HOME. 如果你这样做,当你安装新版本的 Ant 时,或者如果其他人检出文件时,你会出现问题。这是你的问题:

<target name="junit-TestRunner" depends="test-compile">
   <java classname="org.junit.runner.JUnitCore" 
       classpathref="C:\junit-4.10">
       <arg value="org.example.antbook.junit.SimpleTest"/>
   </java>

Aclasspathref是对类路径的引用。它是单独定义的,它不是jar或目录。

例如,在调用我的<java>任务之前,我首先定义我的类路径引用:

<classpath id="test.classpath">
    <pathelement path="C:/junit-4.10"/>
</classpath>

这定义了对这个类路径的引用,称为test.classpath. 您现在可以在<java>任务中使用它:

<target name="junit-TestRunner" depends="test-compile">
    <classpath id="test.classpath">
        <pathelement path="C:/junit-4.10"/>
    </classpath>

   <java classname="org.junit.runner.JUnitCore" 
       classpathref="test.classpath">
       <arg value="org.example.antbook.junit.SimpleTest"/>
   </java>

您可以做的另一件事是简单地包含classpath,因此您不必首先定义对它的引用:

<target name="junit-TestRunner" depends="test-compile">
   <java classname="org.junit.runner.JUnitCore">
       <arg value="org.example.antbook.junit.SimpleTest"/>
       <classpath>
           <pathelement path="C:/junit-4.10"/>
       </classpath>
   </java>

顺便说一句,避免使用反斜杠。它可能会导致问题,因为它有时可以用作引用字符。相反,像我在上面所做的那样使用正斜杠。

于 2013-04-15T00:49:15.757 回答
0

将以下目标添加到您的构建中。

<target name="bootstrap" description="Install build dependencies">
    <mkdir dir="${user.home}/.ant/lib"/>
    <get dest="${user.home}/.ant/lib/junit.jar" src="http://search.maven.org/remotecontent?filepath=junit/junit/4.11/junit-4.11.jar"/>
</target>

这会将 junit jar 安装到第 3 方依赖项的 ANT 标准位置之一。

于 2013-04-14T21:27:09.310 回答
0

I suspect this:

classpathref="C:\junit-4.10"

should point to a jar file or a classes subdir under the above.

于 2013-04-14T16:59:44.970 回答
0

您是否检查过此页面上的第二个“注释” ?我认为最简单的方法是#1,将这些 JAR 放在${ANT_HOME}/lib文件夹中。这样您就不必指定任何类路径。

于 2013-04-14T17:18:00.160 回答