unit-testing - 在 Grails 2.4.4 中使用 @TestFor 的 ClassCastException
问题描述
java.lang.ClassCastException
当我在 Grails 2.4.4 的 Spock 测试中使用@TestFor
注释时,我得到了一个。
这是我的代码:
package com.mycompany.myproject
import grails.test.mixin.TestFor
import grails.test.mixin.TestMixin
import grails.test.mixin.support.GrailsUnitTestMixin
import spock.lang.Specification
@TestFor(SnsService)
@TestMixin(GrailsUnitTestMixin)
class SnsServiceSpec extends Specification {
def "test something"() {
expect:
service.name == "bacon"
}
}
这是错误消息:
| Running 2 unit tests... 1 of 2
| Failure: test something(com.campuscardtools.myphotoid.SnsServiceSpec)
| java.lang.ClassCastException: java.lang.Class cannot be cast to com.campuscardtools.myphotoid.SnsService
at com.campuscardtools.myphotoid.SnsServiceSpec.test something(SnsServiceSpec.groovy:16)
| Completed 1 unit test, 1 failed in 0m 0s
| Tests FAILED - view reports in /Users/terskine/git/myphotoid-api/target/test-reports
但是,如果我只是声明服务,一切正常:
package com.mycompany.myproject
import grails.test.mixin.TestFor
import grails.test.mixin.TestMixin
import grails.test.mixin.support.GrailsUnitTestMixin
import spock.lang.Specification
@TestFor(SnsService)
@TestMixin(GrailsUnitTestMixin)
class SnsServiceSpec extends Specification {
SnsService service = new SnsService()
def "test something"() {
expect:
service.name == "bacon"
}
}
然后,我得到:
grails> test-app -unit SnsService
| Completed 1 unit test, 0 failed in 0m 0s
| Tests PASSED - view reports in /Users/terskine/git/myphotoid-api/target/test-reports
我在同一个项目中有大量使用@TestFor
注释但不需要显式声明组件的单元测试。
我错过了什么?如果很明显,我很抱歉。
解决方案
为什么要添加 GrailsUnitTestMixin?这甚至有必要吗?
推荐阅读
- kubernetes - Kubernetes 网络模型 vs. 网络插件 vs. 网络策略
- ffmpeg - FFmpeg 的 GIF 叠加层闪烁
- logback - Logback:翻转不会删除过期的日志
- python - 保存结果数独回溯
- sql - 使用另一个表中的条件查询一个 SQL 表
- java - 应用程序暂停时如何避免工作人员运行 - android
- audio - 在 ffmpeg 中规范化音频 - 如何?
- html - 如何在primefaces inputText或inputNumber中添加图像?
- python-3.x - 在 3d 体积内创建一个 3d 圆柱体
- sql - Oracle如何对时间序列进行分类?