java - 使用ANT自动运行JUNIT案例,设置依赖

标签 java testing ant junit

我的应用程序有以下设置:

enter image description here

项目 TestAll 当前包含一个 java 文件,该文件运行我所有其他项目中的所有 TestAll java 文件,并且按预期工作。我面临的问题是我希望此 TestAll.java 从 ant 脚本运行并将结果记录在报告文件中。此 javafile 依赖于我的应用程序中的所有其他项目。

这是我目前所拥有的:

<?xml version="1.0"?>
<project name="Ant-Test" default="main" basedir=".">
  <!-- Sets variables which can later be used. -->
  <property name="src.dir" location="" />
  <property name="build.dir" location="../bin" />
  <property name="dist.dir" location="../dist" />
  <property name="lib.dir" location="../lib" /> 
  <property name="test.dir" location="../src" />
  <property name="test.report.dir" location="../testreport" />


  <target name="clean">
    <delete dir="${build.dir}" />
    <delete dir="${dist.dir}" />
  </target>

      <!-- Define the classpath which includes the junit.jar and the classes after compiling-->
      <path id="junit.class.path">
        <pathelement location="${lib.dir}/junit.jar" />
        <pathelement location="${build.dir}" />
      </path>

  <target name="makedir">
    <mkdir dir="${build.dir}" />
    <mkdir dir="${dist.dir}" />
    <mkdir dir="${test.report.dir}" />
  </target>

  <!-- Compiles the java code (including the usage of library for JUnit -->
      <target name="compile" depends="clean, makedir">
        <javac srcdir="${src.dir}" destdir="${build.dir}">
          <classpath refid="junit.class.path" />
        </javac>
  </target>

      <target name="junit" depends="compile">
        <junit printsummary="on" fork="true" haltonfailure="yes">
          <classpath refid="junit.class.path" />
          <formatter type="xml" />
          <batchtest todir="${test.report.dir}">
            <fileset dir="${src.dir}">
              <include name="**/*Test*.java" />
            </fileset>
          </batchtest>
        </junit>
      </target>

  <!--Creates the deployable jar file  -->
  <target name="jar" depends="compile">
    <jar destfile="${dist.dir}\se.testall.jar" basedir="${build.dir}">
      <manifest>
        <attribute name="Main-Class" value="test.Main" />
      </manifest>
    </jar>
  </target>

  <target name="main" depends="compile, jar, junit">
    <description>Main target</description>
  </target>

</project>

我得到的错误是:

[javac] Compiling 1 source file to C:\Repositories\MyProject\TestAllProjects\bin
[javac] C:\Repositories\MyProject\TestAllProjects\src\se\testall\src\TestAllClass.java:6: error: package se.tlv.AProject.testall does not exist
[javac] import se.tlv.AnotherProject.testall.*;
[javac] ^
[javac] C:\Repositories\TestAllProjects\src\se\src\TestAllClass.java:7: error: package se.AnotherProject.testall does not exist

..对于我的 TestAll 项目

中的所有内部导入等等

这很可能是 ANT 无法找到它需要的文件的类路径错误,但我不知道如何解决它并且已经尝试了将近一整天。感谢任何帮助

最佳答案

提供给javac任务的classpath是:junit jar、构建目录和当前目录。

除非当前目录(build.xml 所在的目录)是 se,否则 javac 任务将无法找到任何 java 文件来编译它们。

鉴于此,javac 任务的类路径将需要包含每个项目中每个 se 目录的路径。

编辑:

注意:除非您计划将测试与其余代码打包在一起,否则您应该有两个 javac 任务构建到一个构建目录和一个测试构建目录,然后为每个任务提供一个到 junit 的路径,这样它可以运行测试,但只提供 jar 任务的构建目录路径。

关于java - 使用ANT自动运行JUNIT案例,设置依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16238040/

相关文章:

java - 使用 LDAP 和 Servlet 的透明身份验证

java - 保存或检索以前的 Camel 交换体

java - 如何计算 Spring 测试中 Spring Boot 加载的次数?

java - 使用 Apache Ant 构建 PhoneGap 应用程序

tomcat - JBWEB000250 : Child container with name already exists

java - 如何覆盖特定的 Seam 组件?

java - 如何使用图形库输出Java Applet?

java - io.reactivex.exceptions.UndeliverableException 异常无法传递给消费者,因为它已经取消/处置

unit-testing - 使用 Rhino Mocks 保存到存储库

java - 无法通过记录器解析 com.android.packageinstaller Espresso 生成的代码