我希望测试代码在测试完成后不会回滚。
我在mysql上插入了数据,但它从未提交过。
我使用了 @Rollback ,但很多事情都没有成功。
测试代码如下所示。
import grails.test.spock.IntegrationSpec
import grails.transaction.Rollback;
import org.hibernate.SessionFactory
import spock.lang.*
import com.ms.domain.WordInSentence
class CompanyServiceSpec extends IntegrationSpec {
CompanyService companyService;
void "count login to private area"() {
setup:''
when:''
then:''
// def transaction = sessionFactory.currentSession.beginTransaction()
companyService.scoreCompany();
// transaction.commit()
}
}
服务类。
@Transactional
class CompanyService {
def dataSource;
void scoreCompany() {
WordInSentence wis = new WordInSentence()
wis.word = "a"
wis.location = 1;
wis.sentence_id = 1
wis.save(flush:true);
wis.save();
}
}
答案 0 :(得分:2)
默认情况下,集成测试在数据库事务中运行 在每次测试结束时回滚。这意味着保存了数据 在测试期间没有持久化到数据库。添加交易 测试类的属性以检查事务行为:
class MyServiceTests extends GroovyTestCase { static transactional = false void testMyTransactionalServiceMethod() { … } }
因此,这应该回答你的问题
...
class CompanyServiceSpec extends IntegrationSpec {
static transactional = false
...