Spring.net + Nhibernate集成测试在不应该通过的情况下通过
时间:2020-03-06 14:39:37 来源:igfitidea点击:
我使用带有NHiberante(HibernateTemplate)的Spring.net来实现我的DAO。
我还进行了一些集成测试,这些测试从'AbstractTransactionalDbProviderSpringContextTests'扩展而来。
DI运行正常,并且所有测试通过,但有时即使它们不通过也可以通过。
例如,如果我的hbm.xml文件有如下错误:
`<class name =" Confluence.Domain.User" table ="此表不存在">
测试失败,但是如果错误是这样的:
`<多对多
class =" Confluence.Domain.User"
column ="此列不存在" />
测试通过,并悄无声息地隐藏了该错误。
我正在使用SetComplete()对其进行测试,并检查数据库中的更改,但是我认为这种测试的整个思路并非如此。
谁能告诉我如何解决此问题?
非常感谢你!
@Ben:如果我必须实际执行SQL脚本以查看它们是否有效,那么使用这种Spring测试有什么好处?
解决方案
如果映射中存在语法错误,则NHibernate将在config.BuildSessionFactory()上失败
但是对于拼写错误/不存在的数据库对象,NHibernate知道的唯一方法是实际运行查询...因此,我们可以使用一些集成测试来测试单个实体上的插入/选择,以确保它可以正常工作。
虽然不确定与Spring.NET有什么关系。
测试基于NH的DAO时,应刷新会话,以便使用新信息更新数据库,但仍像以前一样回滚。 http://forum.springframework.net/showthread.php?t=5246在此说明了如何执行此操作。我已将此添加到参考文档中。希望这可以帮助。
干杯,
标记