使用grails进行单元测试时出现javax.sql.DataSource问题

时间:2011-05-18 05:18:22

标签: unit-testing grails groovy junit

我一直在使用javax.sql.DataSource来处理我的服务中的sql查询:

class SomeService {  
    javax.sql.DataSource datasource

    def someFoo(foo) {
        def sql = new Sql(dataSource)
        def query = "SELECT DISTINCT * FROM someDomain WHERE FOO = ${foo}"
        def result = sql.rows(query)
        return result
    }  
}

我已经为服务创建了一些单元测试

class SomeServiceTests extends GrailsUnitTestCase {
    def service

    protected void setUp() {
        super.setUp()
        service = new SomeService()
    }

    def testSomeFoo() {
        service.datasource = new javax.sql.DataSource
        def result = service.someFoo("foo")
        assertNotNull result
    }
}

我相信我的服务运行良好。 但是,我从测试中得到以下错误:

 Caused an ERROR
Must specify a non-null Connection
java.lang.NullPointerException: Must specify a non-null Connection

所以,这是测试框架的问题还是我在这里遗漏了什么? 我也用executeQuery尝试了类似的情况,但是它也抛出了“MissingMethodException”。

我可以使用这些进行单元测试,因为集成测试也会出现同样的问题吗?

有什么方法可以模拟其中任何一个或隔离数据部分,以便只验证方法?

0 个答案:

没有答案