[Grails] 有没有人遇到Grails应用单元测试的时候数据保存不了的问题
jacky.jihao
2008-02-16
我在读Grails权威指南,也按照书上的东西做点小练习,但是在做单元测试或者是使用Grails控制台保存数据的时候总是不能保持进去,代码如下,有没有人能给点意见的?
数据库配置如下:dataSource { pooled = false driverClassName = "org.hsqldb.jdbcDriver" username = "sa" password = "" } hibernate { cache.use_second_level_cache=true cache.use_query_cache=true cache.provider_class='org.hibernate.cache.EhCacheProvider' } // environment specific settings environments { development { dataSource { dbCreate = "create-drop" // one of 'create', 'create-drop','update' url = "jdbc:hsqldb:file:devDB;shutdown=true" } } test { dataSource { dbCreate = "update" url = "jdbc:hsqldb:mem:testDb" } } production { dataSource { dbCreate = "update" url = "jdbc:hsqldb:file:prodDb;shutdown=true" } } } class BookmarkTests extends GroovyTestCase { void setUp() { new Bookmark(url:"http://www.skillsmatter.com",title:"SkillsMatter",rating:10,type:'general').save() new Bookmark(url:"http://www.canoo.com",title:"Canoo",rating:8,type:'general').save() new Bookmark(url:"http://grails.org",title:"Grails",rating:6,type:'general').save() new Bookmark(url:"http://groovy.codehaus.org",title:"Groovy",rating:4,type:'general').save() } void tearDown() { Bookmark.list()*.delete() } void testSortBookmarks() { def sortUrlBy = { //property->Bookmark.findAll().sort {it."$property"}.url param->Bookmark.findAll().sort {it."$param"}.url } def urls = sortUrlBy("title") assert urls //这里就取不到数据了,也就是说save()方法没有起作用 assert urls.size() == 4 assert urls[0].toString() =="http://www.canoo.com" assert urls[1].toString() =="http://grails.org" } |
|
agile_boy
2008-02-18
根据你的配置,测试的时候当然不能保持了,因为你的jdbc url 采用的mem的方式,因此运行完毕数据就被清除了。
|
|
agile_boy
2008-02-18
如果你运行测试应该执行的是这个url
jdbc:hsqldb:mem:testDb |
|
jacky.jihao
2008-02-27
这个不能保持那就有问题了,java做单元测试的时候我也使用hsqldb的内存模式,数据至少会存在内存里,单元测试没有问题。
而Grails里我也用hsqldb内存模式做测试,但是数据不会保存在内存里,单元测试就不能通过了! 我觉得这是一个bug |
|
casephoen
2008-03-24
test还没跑完呢,我觉得内存数据不应该没有吧
试试save(flash:true)好像是这个参数,你查查,以前好像看到过有关test不能save成功的问题就是这么解决的 |