I've just started using Spock to write tests for my Java project. First I had some trouble figuring out how to compare floats with an accepted diff (like the delta parameter in JUnit's assertEquals).
I haven't found any other way to do this than either using the methods in JUnit's Assert class, except using the closeTo matcher that appears to be bundled with Spock. Still, I'm unable to make it work.
If I try making a test with closeTo, I end up with the following error.
Am I missing a dependency, doing it wrong, or what?
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)