我有一个Java项目需要在执行单元测试之前使用新模式填充数据库。 Maven用于构建项目。 Unitils用于单元测试。
我的计划是按以下顺序执行以下脚本:
作为附带好处,我可以看到,如果参考数据脚本无法执行,它将不再与模式匹配。
我已经使用Maven的hibernate3插件在构建时生成模式脚本。我还使用maven-antrun-plugin将这些脚本全部复制到相同的目录(target / dbscripts)中,并按执行顺序排列数字,如下所示:
计划是让单元的DBMaintainer部分运行脚本,如Unitils Tutorial所述,使用src / test / resources中的以下(已清理的)unitils.properties文件:
database.driverClassName=com.sybase.jdbc3.jdbc.SybDriver database.url=jdbc:sybase:Tds:mydatabase.server.example.com:9000/my_database database.userName=myusername database.password=mypassword database.dialect=org.hibernate.dialect.SybaseDialect database.schemaNames=dbo DatabaseModule.Transactional.value.default=disabled org.unitils.core.dbsupport.DbSupport.implClassName=org.unitils.core.dbsupport.MsSqlDbSupport DbUnitModule.DataSet.loadStrategy.default=com.example.dao.SybaseCleanInsertLoadStrategy updateDataBaseSchema.enabled=true dbMaintainer.script.locations=target/dbscripts dbMaintainer.cleanDb.enabled=true dataSetStructureGenerator.xsd.dirName=target/xsd
Unitils加载数据集并进行单元测试,但它似乎永远不会运行脚本。我敢肯定,这是一件很简单的事情。
另一种方法是使用sql-maven-plugin,但我无法在进程测试资源中执行它,所以我现在已经提出了这个想法。
如何让Unitils实际执行SQL,如果可能的话,如果SQL无法执行则会失败?
答案 0 :(得分:0)
你能提供更多信息吗?
日志中有什么东西吗?它应该提到类似的东西:
检查数据库是否必须更新。
您确定在测试执行时目标/ dbscripts中有脚本吗?
是否加载了unitils-local.properties,其中updateDataBaseSchema属性设置为false?
现在单元仍然使用它自己的dbmaintainer版本。在下一个版本中,将与dbmaintain本身进行完全集成(alpha将在下周推出)。
请注意,dbmaintain还具有运行数据库脚本的maven任务。请访问www.dbmaintain.org了解更多信息。
brgds, 添
答案 1 :(得分:0)
使用类似DBUnit之类的东西会让生活更轻松吗?它关注创造和测试表的数量。