我刚刚开始使用 Spock 为我的 Java 项目编写测试。首先,我在弄清楚如何将浮点数与可接受的差异进行比较(如 JUnit 的 assertEquals 中的 delta 参数)时遇到了一些麻烦。
除了使用 JUnit 的 Assert 类中的方法之外,我还没有找到任何其他方法来做到这一点,除了使用似乎与 Spock 捆绑在一起的 closeTo 匹配器。尽管如此,我还是无法让它发挥作用。
如果我尝试使用 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)