使用closeTo匹配器将浮点数与Spock进行比较时出错(Groovy测试框架)

时间:2012-02-12 12:21:38

标签: java groovy spock

我刚刚开始使用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)

1 个答案:

答案 0 :(得分:1)

你缺少org.hamcrest:hamcrest-core:1.2,它是从spock-core POM引用的。