2

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)

(2番目の例外は、以下の修正(1)が適用された場合に表示されます)

その理由は何ですか?

次の変更を加えてテストを修正できるようです。

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

しかし、これは有効な解決策のようには見えません(単体テストのアプリケーションを変更して機能させる)。

私が何か間違ったことをしているのか、Grailsにバグがあるのか​​を理解するのを手伝ってください。

更新:バグを送信しましたhttp://jira.grails.org/browse/GRAILS-9718

4

0 に答える 0