0

我正在编写我的 build.xml。但是,我的 junit 任务似乎出了点问题。当我运行我的 junit 任务时。我可以构建成功,但 junit 报告仅显示运行 1 次测试时出错。但是我有10多个测试。所以我想知道我的junit任务是否运行了一些东西。这是我的代码。

<property name="src.dir"    value="src"/>
<property name="bin.dir"    value="bin"/>
<property name="dest.dir"   value="dest"/>
<property name="test.dir"   value="test/>
<property name="lib.dir"    value="lib"/>
<path id="classpath">
    <pathelement location="${lib.dir}/junit-4.11.jar"/>
    <pathelement location="${lib.dir}/ant-junit4.jar"/>
</path>

<target name="test" depends="compile">
    <junit printsummary="yes" haltonfailure="no">
            <classpath>
                <pathelement location="${bin.dir}"/>
                <path refid="classpath"/>
            </classpath>
            <formatter type="plain" usefile="false"/>   
                <batchtest fork="yes">
                    <fileset dir="${test.dir}" includes="*Test*.java"/>
                </batchtest>
            </junit>
        </target>

我无法弄清楚出了什么问题,所以有人可以帮助我吗?

4

1 回答 1

1

发生了什么?您收到任何错误消息吗?

您通常需要执行以下操作:

  • 编译你的正常代码。生成的*.class文件应该放在一个目录中,例如target/classesbuild/classes。使用任务的destdir参数<javac>来执行此操作。
  • 编译您的 JUnit 测试。
    • 在您的类路径中,您需要编译普通类所需的所有 jars
    • 您需要参考destdir您的普通类被编译到的位置。
    • 您需要 JUnit jar。
    • 这些应该编译到与普通 jar不同的目录。通常,这是target/test-classesbuild/test-classes

一旦你编译了 JUnit 测试,你就可以运行它们了。您可以<junit>像以前一样使用该任务。

  • 您需要确保将includeantruntime参数设置为true
  • 您还应该设置forktrue.
  • 编译测试类时需要相同的类路径(包含所有三个元素)。可能需要更多的罐子,但通常不需要。
  • 您在已编译的JUnit 测试类文件(您保存到target/test-classes或的那些文件上运行测试build/test-classes。在您的示例中,您尝试针对源运行它们。

我将 Maven 标准用于我的目录布局。这意味着我的 Java 源代码位于src/main/java我的 JUnit Java 文件位于src/test/java. 任何需要的 XML 或属性或其他无源文件都存储在src/main/resources. 常规源代码编译为,target/classes而 Junit 源代码编译为target/test-classes.

这使得单独编译代码和测试代码变得容易,而无需担心目录编译**/test/****/Test/****/JUnit/**异常,因为一切都是分开的。

希望这可以帮助。

于 2012-12-10T00:53:50.407 回答