3

我看过一些关于 Grails 2.3.x 和集成测试问题的帖子,但没有任何帮助我的情况,所以这里是:

我想针对真实的实时数据库 (Oracle) 测试我的 Grails 服务,因此我在 Spock 中编写了一些集成测试。无论我尝试哪种推荐的方法,我都会得到同样的错误。我希望这是一些简单而愚蠢的事情,但我担心有一个问题需要 Grails 团队解决。

这是代码,经过适当清理以消除我工作地点的任何提示:

package com.mycompany

import grails.test.spock.IntegrationSpec
import spock.lang.*
import com.mycompany.User

class UserServiceSpec extends IntegrationSpec {

    UserService userService

    def setup() {
    }

    def cleanup() {
    }

    void "find a user by their id"() {
            when:
                User user = userService.find('1234')
        then:
                user.firstName == 'Brian'
    }
}

从我读到的所有内容来看,这就是您使用 Grails 2.3 及更高版本的方式。我一直收到以下错误

java.lang.IllegalArgumentException: ServletContext must not be null

任何帮助总是受到赞赏。

布赖恩

4

2 回答 2

2

可能导致该问题的一件事是,如果您UserServiceSpec的定义是在下面test/unit/而不是test/integration应该在哪里。

于 2014-08-15T13:57:47.187 回答
0

当我向我的套件添加新的集成测试时,我遇到了这个问题。我在这种情况下进行了扩展IntegrationSpec,就像集成测试一样。

不幸的是,集成范围的其他测试通过 using@Mock@TestFor注解错误地完成,这些注解仅用于单元测试。修复了其他测试,解决ServletContext must not be null了新测试出现错误信息的问题。

于 2015-11-28T09:00:13.723 回答