【问题标题】:Error when running JUnit: Fixing in build.xml运行 JUnit 时出错:在 build.xml 中修复
【发布时间】:2017-09-26 20:30:39
【问题描述】:

我正在继承一个项目。我最近更新了 Proguard 和 JUnit 版本,但在运行命令 ant jtest 时遇到问题。

我目前拥有的软件版本:

Java 1.8.0_141

蚂蚁 1.10.1

Proguard:最近更新到 5.3.3,原来是 4.9

JUnit:最近更新到 4.12,是 4.10

测试套件在 Eclipse 中运行良好,但是当使用命令从 Cygwin 运行时,我在输出末尾收到此错误:

jtest:
[mkdir] Created dir: C:\users\user\Documents\Workspace\project\build\test-data
 [echo]
[junit] Testsuite: com.package.project.AllTests
[junit] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.016 sec
[junit]
[junit] Testcase: initializationError took 0.002 sec
[junit]     Caused an ERROR
[junit] org/hamcrest/SelfDescribing
[junit] java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
[junit]     at java.lang.ClassLoader.defineClass1(Native Method)
[junit]     at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
[junit]     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
[junit]     at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
[junit]     at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
[junit]     at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
[junit]     at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
[junit]     at java.security.AccessController.doPrivileged(Native Method)
[junit]     at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
[junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[junit]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
[junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[junit]     at java.lang.Class.getDeclaredConstructors0(Native Method)
[junit]     at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
[junit]     at java.lang.Class.getConstructor0(Class.java:3075)
[junit]     at java.lang.Class.getConstructor(Class.java:1825)
[junit]     at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
[junit] Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
[junit]     at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
[junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[junit]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
[junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[junit]

这是我的 build.xml 文件

我对 build.xml 文件不是很熟悉。我知道这个错误是因为 JUnit 具有 hamcrest-core-1.3.jar 的依赖项。如何将 JUnit 指向 hamcrest-core-1.3.jar 文件以使该命令正常工作?我可以从 build.xml 做吗?

【问题讨论】:

    标签: java junit ant proguard hamcrest


    【解决方案1】:

    您的 jtest 目标使用此类路径运行 junit

    <path id="test.classpath">
        <pathelement location="${testclassesdir}" />
        <pathelement location="${builddir}/project.jar" />
        <path refid="project.libs" />
        <pathelement location="${toolsdir}/junit4.12/junit-4.12.jar" />
    </path>
    

    您需要将 hamcrest-core-1.3.jar 添加到该类路径。您可以通过在您的${toolsdir}downloading hamcrest-core-1.3.jar 中创建一个目录名称“hamcrest1.3”到该目录中,然后更新test.classpath 以添加此pathelement

    <pathelement location="${toolsdir}/hamcrest1.3/hamcrest-core-1.3.jar" />
    

    【讨论】:

    • 谢谢!我知道我必须在文件中的某处添加路径,但不确定在哪里。感谢您的帮助。
    猜你喜欢
    • 2015-06-24
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 2015-12-14
    • 2012-07-11
    • 1970-01-01
    • 2013-10-24
    相关资源
    最近更新 更多