【问题标题】:ClassCastException w/ @TestFor in Grails 2.4.4在 Grails 2.4.4 中使用 @TestFor 的 ClassCastException
【发布时间】:2019-11-12 20:47:39
【问题描述】:

当我在 Grails 2.4.4 的 Spock 测试中使用 @TestFor 注释时,我得到了一个 java.lang.ClassCastException

这是我的代码:

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 注释但不需要显式声明组件的单元测试。

我错过了什么?如果很明显,我很抱歉。

【问题讨论】:

    标签: unit-testing grails spock


    【解决方案1】:

    为什么要添加 GrailsUnitTestMixin?这还有必要吗?

    【讨论】:

    • grails create-unit-test 添加了它。我尝试删除它,但没有任何区别。
    猜你喜欢
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2015-01-15
    相关资源
    最近更新 更多