使用junit在grails 2.5中设置集成测试的正确方法是什么?

时间:2015-06-02 17:32:00

标签: grails junit dependency-injection integration-testing

使用grails 2.2,以下代码(这是GORM类的集成测试)工作正常:

public class DbDeploymentIntegrationTests extends GroovyTestCase
{
  DeploymentStorageImpl deploymentStorage

  DeploymentService deploymentService

  @Override
  protected void setUp()
  {
    super.setUp()
    deploymentStorage = deploymentService.deploymentService.deploymentStorage
  }
...
}

当我更新为grails 2.5时,现在失败了:

| Failure:  testIncludeDetails(org.linkedin.glu.console.domain.DbDeploymentIntegrationTests)
|  java.lang.NullPointerException: Cannot get property 'deploymentService' on null object
    at org.linkedin.glu.console.domain.DbDeploymentIntegrationTests.setUp(DbDeploymentIntegrationTests.groovy:41)

文档(http://grails.github.io/grails-doc/2.5.0/guide/upgradingFrom22.html)声明如下:

  

集成测试的依赖注入

     

为了支持   备用JUnit4测试跑步者,Grails 2.3不再使用特殊的   测试运行测试和集成测试应该不再扩展   GroovyTestCase的。

     

此更改要求任何需要的JUnit集成测试   依赖注入现在需要注释:

     

@TestMixin(IntegrationTestMixin)

我尝试添加此注释并且它没有效果:代码仍然在setup方法中失败。如果我注释掉setup并直接在测试方法中访问deploymentService,那么它确实有效。因此依赖注入发生了。不只是在setup方法中。它曾经正常运作。

知道如何解决这个问题吗?

由于

1 个答案:

答案 0 :(得分:1)

请参阅https://jira.grails.org/browse/GRAILS-10584

您的测试不应该扩展GroovyTestCase,而应该使用JUnit 4样式

相关问题