【问题标题】:Jenkins cannot find JUnit (Netbeans+ Git + Ant + JUnit + Jenkins)Jenkins 找不到 JUnit(Netbeans+ Git + Ant + JUnit + Jenkins)
【发布时间】:2011-12-22 18:03:30
【问题描述】:

如何让 Jenkins 在使用 Ant 构建时找到 JUnit?

阅读答案herehere 我相信我有一个类路径问题,但我无法解决它。在我的 Netbeans 项目中,我有一个在 Netbeans 中运行良好的 JUnit 测试。我将项目推送到我的 Git 存储库,Jenkins 看到了更改并构建了项目,但我收到了一堆错误(如下),因为找不到 JUnit。

-do-compile-test:
    [javac] Compiling 1 source file to C:\Jenkins\jobs\demo\workspace\demo\build\test\classes
    [javac] C:\Jenkins\jobs\demo\workspace\demo\test\MainTest.java:6: package org.junit does not exist
    [javac] import org.junit.After;
    [javac]                 ^
    [javac] C:\Jenkins\jobs\demo\workspace\demo\test\MainTest.java:7: package org.junit does not exist
    [javac] import org.junit.AfterClass;
    [javac]  

           ^

JUnit 在我的%ANT_HOME%\lib 目录中(Windows 7 64 位)。我的 Netbeans 项目的文件结构是这样的:

我已尝试通过此处讨论的 Ant 编辑类路径,但无法正常工作。

这是我第一次使用 Ant、JUnit 和 Jenkins,但我认为我真的很接近让它们在 Netbeans 和 Git 上正常工作。我很乐意提供更多信息。已经为此奋斗了 3 天,因此将不胜感激。

【问题讨论】:

    标签: git netbeans ant junit jenkins


    【解决方案1】:

    我知道回复有点晚了,但现在我们有办法解决这个问题...

    我有同样的问题,我有一个由 ant 构建的项目,我解决了包含到 junit.jar 和 hamcrest-core.jar 的 build.xml 路径

    1. 从 junit 存储库中下载 junit.jar 和 hamcrest-core.jar 混帐:https://github.com/junit-team/junit/wiki/Download-and-Install

    2. 将文件粘贴到您的 jenkins/hudson 服务器中的某个位置

    3. 编辑 您的 build.xml 文件添加以下行:

      <property name="JUNIT_HOME" value="path_to_folder_contain_junit_&_hamcrest_jars"/>
      <path id="JUnit 4.libraryclasspath">
          <pathelement location="${JUNIT_HOME}/junit.jar"/>
          <pathelement location="${JUNIT_HOME}/hamcrest-core.jar"/>
      </path>
      <path id="projectname.classpath">
          <pathelement location="your_bin_folder"/>
          <path refid="JUnit 4.libraryclasspath"/>
      </path>
      
      <!--in your javac task include the classpath -->
      <javac debug="true" debuglevel="${debuglevel}" destdir="your_bin_folder" source="${source}" target="${target}">
          <src path="src"/>
          <classpath refid="projectname.classpath"/>
      </javac>
      
    4. 将文件提交到您的 svn、git 或任何服务器。

    5. 尝试构建。现在 junit 在你的类路径中,jenkins 可以完成构建

    【讨论】:

    • +1 用于解决我遇到的问题。然而快速的问题。对于 javac 元素,您是将其放入 build.xml 还是 nbproject/build-impl.xml 中? destdir 也是构建/类吗?非常感谢任何帮助
    • build.xml 是 jenkins 的 ant 文件,我使用 eclipse 然后我生成这个文件并上传到 svn 存储库,destdir 是放置你的 .class 文件的目录
    【解决方案2】:

    尝试提供文件相对于当前目录的完整路径 所以考虑到你的测试结果在nbproject,当前工作目录是demo

    在发布 JUnit 结果下 写

    nbproject/*.xml
    

    【讨论】:

      【解决方案3】:

      您可以在 NetBeans 中处理此问题,而无需自己弄乱 Ant 文件。

      你应该

      • 下载 Junit 和 Hamcrest JAR 文件,并将它们存储在应用程序的 lib/ 目录中
      • 在 NetBeans 中,右键单击您的项目,选择 Properties,然后选择左侧的 Libraries。切换到 Compile Tests 选项卡,删除系统范围的 Junit 库,然后使用 Add JAR/Folder 按钮从您的 lib/ 目录中添加这些库。

      确保您已将相关的 Ant 文件([project]/build.xml[project]/nbproject/build-impl.xml 添加到您的 VCS。

      然后告诉 Jenkins ant 文件在哪里(您的仓库中 [project]/build.xml 的路径),以及要运行的 Ant 目标(通常是 Java 的“测试 jar” SE 应用程序)。

      如果您不能(或不想)手动在 CI 服务器上存储单独的文件,此解决方案还有一个优点。它的缺点是您将库与您的应用一起提供,而不是使用可能已经在服务器上可用的系统范围的库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-16
        • 1970-01-01
        • 2016-07-21
        • 1970-01-01
        • 1970-01-01
        • 2013-02-02
        • 1970-01-01
        • 2013-06-25
        相关资源
        最近更新 更多