我刚开始使用grails2.3,在运行单元测试时遇到了问题。到目前为止我所做的是
grails create-app new-app
grails create-service NewService
grails test-app这会产生
| Running 1 unit test...
| Completed 0 unit test, 0 failed in 0m 2s
| Tests PASSED - view reports in C:\Git\aspera_web\target\test-reports目前为止还不错,但是如果我编辑这个方法
void "test something"() {
}在NewServiceSpec类中
void "test something"() {
assert false
}再跑一次我又一次
| Running 1 unit test...
| Completed 0 unit test, 0 failed in 0m 2s
| Tests PASSED - view reports in C:\Git\aspera_web\target\test-reports然后我查看了spock文档,并试图再次编辑我的测试。这一次
void "test something"() {
expect: 1 == 2
}产
| Running 1 unit test...
| Running 1 unit test... 1 of 1
| Failure: test something(aspera_web.NewServiceSpec)
| Condition not satisfied:
false
at aspera_web.NewServiceSpec.test something(NewServiceSpec.groovy:19)
| Completed 1 unit test, 1 failed in 0m 2s
| Tests FAILED - view reports in C:\Git\aspera_web\target\test-reports这看起来很有希望,所以下一步是在我的NewService类中测试方法,所以我再次将测试更改为
def service = new NewSevice()
void "test something"() {
expect: service.serviceMethod()
}当我运行它时,我得到
| Running 1 unit test...
| Running 1 unit test... 1 of 1
| Failure: test something(aspera_web.NewServiceSpec)
| java.lang.NullPointerException
at aspera_web.NewServiceSpec.test something(NewServiceSpec.groovy:21)
| Completed 1 unit test, 1 failed in 0m 2s
| Tests FAILED - view reports in C:\Git\aspera_web\target\test-reports为了更好的测量,我还直接从Spock exmaples添加了一个测试。
def stack = new Stack()
def "size"() {
expect: stack.size() == 0
}就像魅力一样..。
最后,我的问题是:
编辑
显然,这是Grails2.3.0中的一个bug,请参阅下面的答案。
发布于 2013-09-25 14:16:17
解决方案是进入生成的服务类并删除@Transaction参数。然后,由于某种原因,将实例化测试中的服务变量。
我已经提交了一份关于它的JIRA报告。
解决方案
只需删除注释并添加行
static transactional = true而不是为了得到相同的行为。
发布于 2013-09-25 11:53:11
https://stackoverflow.com/questions/18999343
复制相似问题