ClassCastException w / @TestFor在Grails 2.4.4中

问题描述 投票:0回答:1

[我在Grails 2.4.4的Spock测试中使用java.lang.ClassCastException注释时得到了@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批注的单元测试,但无需显式声明该组件。

我想念的是什么?如果明显的话,我先对不起。

unit-testing grails spock
1个回答
0
投票

您为什么要添加GrailsUnitTestMixin?这甚至有必要吗?

© www.soinside.com 2019 - 2024. All rights reserved.