我正在尝试编译一个名为TestsVorgabe的类,它代表一个包含五个其他测试的测试套件。它适用于正常的JUnit测试,但是当我尝试使用ant编译它时,我得到了一个
错误:找不到符号
这样的项目结构:
为了确保我真正得到正确的.jars并包含它们,我有两种方式将它们传递给Ant。我的Ant构建文件如下所示:
<property name="src.dir" location="src"/>
<property name="build.dir" location="build"/>
<property name="dist.dir" location="dist"/>
<property name="docs.dir" location="docs"/>
<property name="test.dir" location="test"/>
<property name="buildtest.dir" location="buildtest"/>
<path id="src.path">
<pathelement path="src/"/>
</path>
<path id="compile.path">
<path refid="src.path"/>
<fileset dir="lib/">
<include name="**/*.jar"/>
</fileset>
</path>
<path id="unit.test.path">
<path refid="compile.path"/>
<pathelement path="test/"/>
</path>
<!--Löscht die erstellten Verzeichnisse und Sourcen-->
<target name="clean">
<delete dir="${build.dir}"/>
<delete dir="${buildtest.dir}"/>
<delete dir="${dist.dir}"/>
<delete dir="${docs.dir}"/>
</target>
<!--Erzstellt die Verzeichnisstruktur-->
<target name="init">
<mkdir dir="${build.dir}"/>
<mkdir dir="${buildtest.dir}"/>
<mkdir dir="${dist.dir}"/>
<mkdir dir="${docs.dir}"/>
<mkdir dir="${dist.dir}/dist2"/>
</target>
<!--Kompiliert die Programm-Klassen-->
<target name="compile">
<javac includeantruntime="false" srcdir="${src.dir}" destdir="${build.dir}">
<classpath refid="compile.path"/>
</javac>
</target>
<target name="compileUnitTests" depends="compile">
<javac srcdir="test/" destdir="${buildtest.dir}">
<classpath refid="unit.test.path"/>
</javac>
</target>
<target name="runUnitTests" depends="compile">
<junit printsummary="yes" haltonfailure="no">
<jvmarg value="-Dfile.encoding=UTF-8"/>
<classpath refid="unit.test.path"/>
<formatter type="plain"/>
<batchtest fork="yes" todir="${buildtest.dir}">
<fileset dir="${test.dir}">
<include name="**/TestsVorgabe.java"/>
<exclude name="**/AllTests.class"/>
<exclude name="**/*$*.class"/>
</fileset>
</batchtest>
</junit>
</target>
我已经尝试了许多方法来包含.jars和许多编译测试的方法,但似乎没有任何工作,所以我最终得到了这个(不要工作)。
答案 0 :(得分:0)
您使用javac将源代码编译到${build.dir}
但是您没有将它添加到junit任务的类路径中,这是来自documentation的示例:
<classpath>
<pathelement location="${build.tests}"/>
<pathelement path="${java.class.path}"/>
</classpath>
或检查this example(在示例中:${web.classes.dir}
)。
尝试将build.dir添加到junit任务类路径中,我希望这会有所帮助!