使用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
方法中。它曾经正常运作。
知道如何解决这个问题吗?
由于
答案 0 :(得分:1)
请参阅https://jira.grails.org/browse/GRAILS-10584
您的测试不应该扩展GroovyTestCase
,而应该使用JUnit 4样式