Ant 的新功能是 ClassNotFoundException with JUnit



我已经为此挠头一段时间了(谷歌搜索了一堆,浏览了其他相关的SO帖子无济于事(。我有一个由两个文件组成的 Java 程序,LogicTestsTests包含大约一百个 JUnit 测试,我通过调用 javac *.java 然后java org.junit.runner.JUnitCore Tests获得了 100% 的测试成功率。但是,当我使用简单的ant -verbose test运行build.xml时(为了遵循输出,因为我是所有这些的新手(,我得到以下输出:

[junit] Testsuite: Tests
[junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec
[junit] 
[junit] Null Test:  Caused an ERROR
[junit] Tests
[junit] java.lang.ClassNotFoundException: Tests
[junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
[junit]     at java.lang.Class.forName0(Native Method)
[junit]     at java.lang.Class.forName(Class.java:247)
[junit] 
[junit] 
[junit] Test Tests FAILED
BUILD SUCCESSFUL

build.xml如下:

<project name="ETL_Automation" default="test" basedir=".">
<path id="classpath.base">
</path>
<path id="classpath.test">
  <pathelement location="${basedir}/mysql-connector-java-5.1.18-bin.jar" />
  <pathelement location="${basedir}/junit-4.10.jar"/>
  <path refid="classpath.base" />
</path>
<target name="compile">
  <javac srcdir="${basedir}">
    <classpath refid="classpath.test"/>
  </javac>
</target>
<target name="test" depends="compile">
  <junit fork="no">
    <classpath refid="classpath.test" />
    <formatter type="brief" usefile="false" />
    <batchtest>
      <fileset dir="${basedir}/" includes="Tests.class" />
    </batchtest>
  </junit>
</target>
<target name="clean" depends="test">
  <delete>
    <fileset dir="${basedir}" includes="*.class"/>
  </delete>
</target>

目录结构非常简单。 Tests.javaLogic.javajunit-4.10.jarmysql-connector-java-5.1.18-bin.jarbuild.xml和引用的.properties文件都位于同一文件夹中。java代码引用外部文件,但这些文件与此特定问题无关。我不知道类路径是否可能是此问题的原因(因为我很确定我目前拥有的东西不起作用(。

谢谢!

您需要将

带有Tests.class的目录添加到classpath.tests类路径(在您的设置中${basedir}(

尝试:

<path id="classpath.test"> 
  <pathelement location="${basedir}/mysql-connector-java-5.1.18-bin.jar" /> 
  <pathelement location="${basedir}/junit-4.10.jar"/> 
  <pathelement location="${basedir}" /> 
  <path refid="classpath.base" /> 
</path>

相关内容

  • 没有找到相关文章

最新更新