【问题标题】:Error when using closeTo matcher to compare floats with Spock (Groovy testing framework)使用 closeTo 匹配器将浮点数与 Spock 进行比较时出错(Groovy 测试框架)
【发布时间】:2012-02-12 12:21:37
【问题描述】:

我刚刚开始使用 Spock 为我的 Java 项目编写测试。首先,我在弄清楚如何将浮点数与可接受的差异(如 JUnit 的 assertEquals 中的 delta 参数)进行比较时遇到了一些麻烦。

除了使用似乎与 Spock 捆绑的 closeTo 匹配器之外,我还没有找到任何其他方法来执行此操作,无论是使用 JUnit 的 Assert 类中的方法。尽管如此,我还是无法让它工作。

如果我尝试使用 closeTo 进行测试,最终会出现以下错误。

我是否缺少依赖项,做错了,还是什么?

import static spock.util.matcher.HamcrestMatchers.closeTo
import spock.lang.Specification

class MatcherTest extends Specification {
  def "test closeTo"() {
    expect:
    1.9d closeTo(2, 0.5)
  }
}

java.lang.NoClassDefFoundError: org/hamcrest/TypeSafeMatcher
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at spock.util.matcher.HamcrestMatchers.closeTo(HamcrestMatchers.groovy:47)

【问题讨论】:

    标签: java groovy spock


    【解决方案1】:

    您缺少从 spock-core POM 引用的 org.hamcrest:hamcrest-core:1.2。

    【讨论】:

      猜你喜欢
      • 2018-08-28
      • 2013-11-19
      • 1970-01-01
      • 2021-05-28
      • 2017-08-01
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      相关资源
      最近更新 更多