raa*_*tin 2 grails junit hamcrest matcher classloader
在Grails中使用自定义hamcrest匹配器时遇到问题.使用我的匹配器运行测试失败:
java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V
Run Code Online (Sandbox Code Playgroud)
经过一些谷歌搜索后,似乎这是由加载的库的顺序引起的:JUnit和Hamcrest.我在BuildConfig.groovy中添加了以下依赖项:
dependencies {
test 'org.hamcrest:hamcrest-all:1.3'
}
Run Code Online (Sandbox Code Playgroud)
根据我能够找到的指令,可以通过确保在JUnit之前加载hamcrest类来解决这个问题.我不知道如何在Grails中实现这一点,或者如何以任何其他方式解决这个问题.
使用Grails 2.2.1
这取决于您正在使用的JUnit的版本.您可以通过查看来查看lib/junit/junit/jars.我认为默认情况下这是4.10.如果是,请升级到4.11.你可以通过在BuildConfig.groovy中明确指定它来做到这一点我相信:
dependencies {
test 'junit:junit:4.11'
test 'org.hamcrest:hamcrest-all:1.3'
}
Run Code Online (Sandbox Code Playgroud)
为了解释,在4.11之前,一个版本的hamcrest库包含在JUnit发行版中.4.11不再是这种情况,有时您会在类版本之间出现不匹配的情况.
| 归档时间: |
|
| 查看次数: |
490 次 |
| 最近记录: |