当前位置: 首页 > 面试题库 >

Ant新手,使用JUnit的ClassNotFoundException

蒋浩
2023-03-14
问题内容

我已经为此花了一段时间(用Google搜索了一堆,浏览了其他相关的SO帖子都无济于事)。我有一个包含两个文件的Java程序,Logic并且TestsTests包含上百JUnit测试,我已经通过调用得到与上述试验成功率100%
javac *.java,随后java org.junit.runner.JUnitCore Tests。但是,当我build.xml用一个简单ant -verbose test的命令运行(为了跟踪输出,因为我是这一切的新手)时,我得到以下输出:

[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.classclasspath.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>


 类似资料:
  • 如果我在运行ant-task时查看控制台日志,我可以看到新的.jar文件是如何发送的: 如果打开创建的binmanifest.jar,我会发现一个manifest.mf文件,其中包含Class-Path属性中的所有路径,格式为:../../class1/bin../../class2/bin../../classn/bin。但是由于某些原因,我的所有测试都失败了,因为我的类找不到。我错过了什么?谢

  • 我目前有一个私有的Java项目,我正在努力使其成型,以供其他开发人员使用。我尝试做的一件事是让Ant自己下载像JUnit、PMD和FindBugs这样的东西所需要的JAR,这样开发人员就不必自己安装它了。因此,我已经卸载了所有这些内容的RPM包(以确保我使用的是Ivy下载的版本),并且Ivy可以很好地下载JUnit相关的JAR文件。然而,我有两个(可能相关的)问题: 1)如果为任务输入,则会收到警

  • 此任务用于从JUnit测试框架运行测试。 此任务依赖于默认情况下未包含在Apache Ant分发中的外部库。 和都需要运行此任务,因此将这些JAR放在位置:ANT_HOME/lib 。 元素在文件中用于实现此任务。 它还支持嵌套元素,它提供了类似路径的结构。 1. Apache Ant Junit任务属性 属性 描述 必需 打印测试用例的摘要 否 在单独的JVM中运行测试 否 控制着要分叉测试用例

  • 使用ANT的Junit报告。我参加过各种论坛,包括:https://bugs.eclipse.org/bugs/show_bug.cgi?id=384757.最后降落在这里寻求帮助。 基本上,我有一个带有大量测试的junit项目,我正在尝试使用ANT构建来运行它。xml并获取html报告。当使用ANT 1.8.4和JDK 1.7时,该构建会成功运行,但不会生成相同的html报告。从一篇文章中发现J

  • 问题内容: 我使用由maven自动安装的junit。当我运行Maven测试时,我的测试工作正常。但是,当我调用Eclipse JUnit测试时,它不使用当前版本的测试类。 例如,如果我将a更改为a,则会 得到相同的结果。这真让我抓狂。 项目的自动构建已启用。为什么JUnit使用一些旧的废话? 谢谢您的帮助。专家清洗和日食清洗解决了该问题。奇怪的… 问题答案: Maven最有可能编译为./targe

  • 目前,我正在尝试使用Jenkins来部署我的项目代码。在这个项目中,我们使用Junit来实现TDD方法。 最后一个错误是在执行这行时发生了以下错误:也是在build.xml中,当构建一个模块(SDK)时 在成功构建之后,我想为各种测试套件生成Junit-report。Junit测试报告xmls现在正在为每个模块生成。