由于空Params和Session,Grails单元测试中的NullPointerException

时间:2012-12-27 09:06:22

标签: unit-testing grails

从Grails 2.0.0迁移到2.1.2时,我们的一些测试开始因NullPointerException而失败(使用Grails 2.0.3观察到相同的行为)

以下代码片段足以重现此问题

控制器

class TestController {

  def test() {
      render(template: "/test")
  }
}

单元测试

import static org.junit.Assert.*
import grails.test.mixin.*
import grails.test.mixin.support.*
import org.junit.*
import grails.test.mixin.web.GroovyPageUnitTestMixin

@TestMixin(GroovyPageUnitTestMixin)
@TestFor(TestController)
class TestControllerTests {

    void test_paramsAndSession_Null() {
       controller.test()
       def result = response.text
       print result
       assert render(template: "/test") == result
    }
}

模板 _test.gsp:

Params and session test.
Params(<%params.id1%>)<br/>
Session(<%session.id2%>)<br/>

使用Grails 2.0.0,应用程序和测试工作正常。

使用Grails 2.1.2,应用程序仍然正常,但测试开始失败并出现NullPointerException:

java.lang.NullPointerException: Cannot get property 'id1' on null object
at D__Eclipse_Workspace_paramsAndSessionTest_grails_app_views__test_gsp.run(_test.gsp:2)
at TestController.test(TestController.groovy:4)
at TestControllerTests.test_paramsAndSession_Null(TestControllerTests.groovy:12)

java.lang.NullPointerException: Cannot get property 'id2' on null object
at D__Eclipse_Workspace_paramsAndSessionTest_grails_app_views__test_gsp.run(_test.gsp:3)
at TestController.test(TestController.groovy:4)
at TestControllerTests.test_paramsAndSession_Null(TestControllerTests.groovy:12)

(当应用下面的修复(1)时出现第二个例外)

这是什么原因?

我看到我可以修改测试进行以下更改:

params.id1 -> params?.id1 (1)
session.id2 -> session?.id2

但这看起来不是一个有效的解决方案(将我的单元测试应用程序改为工作)。

请帮助我了解我是否做错了或Grails中有错误。

更新:我提交了一个错误http://jira.grails.org/browse/GRAILS-9718

0 个答案:

没有答案