单元测试失败
Unit test fails
我是 Grails 的新手,我想使用 Spock 为服务编写单元测试。但是我有以下问题。
import grails.transaction.Transactional
@Transactional
class BService {
boolean createB(){
return true
}
...
}
为此class我编写了以下测试:
class BServiceTest extends Specification {
def "test createB"(){
given:
def service = new BService()
when:
def boolean temp
temp = service.createB()
then:
temp == true
}
}
我在 运行 这个测试中遇到的错误如下:
java.lang.IllegalStateException: No transactionManager was specified. Using @Transactional or @Rollback requires a valid configured transaction manager. If you are running in a unit test ensure the test has been properly configured and that you run the test suite not an individual test method.
and it shows in GrailsTransactionTemplate.groovy:60
如果有人能给我提示,我将不胜感激。
为你的单元测试添加一个@TestFor(BService)
注解并使用它自动提供的服务实例。有关测试的更多信息,请参阅 http://grails.github.io/grails-doc/3.0.x/guide/testing.html。
感谢 ataylor 的回复。但是我犯了一个错误,所以我现在要回答我自己的问题。
首先,名称转换错误。当我在 grails 中创建服务时,会自动为此设置一个 unit-test,所以在那种情况下我会:
@TestFor(BService)
class BServiceSpec extends Specification {
def setup() {
User u = new User(1)
u.save()
}
def cleanup() {
}
def "test something"(){
}
}
在这种情况下,当我编写单元测试时,它会运行。
我之前做的测试是功能测试,我无法从域中传递对象,所以我有事务管理器的错误。
我是 Grails 的新手,我想使用 Spock 为服务编写单元测试。但是我有以下问题。
import grails.transaction.Transactional
@Transactional
class BService {
boolean createB(){
return true
}
...
}
为此class我编写了以下测试:
class BServiceTest extends Specification {
def "test createB"(){
given:
def service = new BService()
when:
def boolean temp
temp = service.createB()
then:
temp == true
}
}
我在 运行 这个测试中遇到的错误如下:
java.lang.IllegalStateException: No transactionManager was specified. Using @Transactional or @Rollback requires a valid configured transaction manager. If you are running in a unit test ensure the test has been properly configured and that you run the test suite not an individual test method.
and it shows in GrailsTransactionTemplate.groovy:60
如果有人能给我提示,我将不胜感激。
为你的单元测试添加一个@TestFor(BService)
注解并使用它自动提供的服务实例。有关测试的更多信息,请参阅 http://grails.github.io/grails-doc/3.0.x/guide/testing.html。
感谢 ataylor 的回复。但是我犯了一个错误,所以我现在要回答我自己的问题。
首先,名称转换错误。当我在 grails 中创建服务时,会自动为此设置一个 unit-test,所以在那种情况下我会:
@TestFor(BService)
class BServiceSpec extends Specification {
def setup() {
User u = new User(1)
u.save()
}
def cleanup() {
}
def "test something"(){
}
}
在这种情况下,当我编写单元测试时,它会运行。 我之前做的测试是功能测试,我无法从域中传递对象,所以我有事务管理器的错误。