我正在使用Spring.net和NHiberante(HibernateTemplate)来实现我的DAO。
我还有一些集成测试,它们来自'AbstractTransactionalDbProviderSpringContextTests'。
DI工作正常,所有测试通过但有时他们通过即使他们不应该。
例如,如果我的hbm.xml文件有这样的错误:
<class name="Confluence.Domain.User" table="THIS TABLE DOES NOT EXIST">
测试失败,但如果错误是这样的:
<many-to-many
class="Confluence.Domain.User"
column="THIS COLUMN DOES NOT EXIST"/>
测试通过默默隐藏bug。
我正在使用SetComplete()测试它并检查数据库中的更改,但我认为这种测试的整个想法不是这样做的。
有谁能告诉我如何解决这个问题?
非常感谢!
@Ben:如果我必须实际执行SQL脚本以查看它们是否有效,那么使用这种Spring测试有什么好处?
答案 0 :(得分:2)
在测试基于NH的DAO时,您应该刷新会话,以便使用新信息更新数据库,但仍像以前一样回滚。这里解释了如何执行此操作 - http://forum.springframework.net/showthread.php?t=5246我已将此添加到参考文档中。希望这会有所帮助。
干杯, 标记
答案 1 :(得分:1)
如果您的映射中存在语法错误,那么NHibernate将在config.BuildSessionFactory()
上失败但是对于错误/不存在的数据库对象,NHibernate知道的唯一方法是实际运行查询...所以你可以使用一些集成测试来测试单个实体上的插入/选择,以确保它的工作原理。
不确定这与Spring.NET有什么关系。