[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成功的问题就是这么解决的
Global site tag (gtag.js) - Google Analytics