English 中文(简体)
Spring.net+Nhibernate集成测试在不应该通过的时候通过
原标题:
  • 时间:2008-09-24 13:02:37
  •  标签:

我正在使用Spring.net和NHiberante(Hibernate模板)来实现我的DAO。

我还有一些集成测试,它们是从AbstractTransactionalDbProviderSpringContextTest扩展而来的。

DI运行良好,所有测试都通过了,但有时它们通过了,即使它们不应该通过

例如,如果我的hbm.xml文件出现如下错误:

<;class=“Confluence.Domain.User”table=“此表不存在”>

测试失败,但如果错误如下所示:

<many-to-many class="Confluence.Domain.User" column="THIS COLUMN DOES NOT EXIST"/>

测试以静默方式通过,隐藏了错误。

我正在使用SetComplete()对其进行测试,并检查DB中的更改,但我认为这种测试的全部想法并不是这样做。

有人能告诉我如何解决这个问题吗?

非常感谢你!

@Ben:如果我必须实际执行SQL脚本,看看它们是否有效,那么使用这种Spring测试有什么好处?

最佳回答

如果映射中有语法错误,那么NHibernate将在config.BuildSessionFactory()上失败

但对于拼写错误/不存在的数据库对象,NHibernate知道的唯一方法是实际运行查询。。。因此,您可能会使用一些集成测试来测试单个实体上的插入/选择,以确保其有效。

但不确定这与Spring.NET有什么关系。

问题回答

当测试基于NH的DAO时,您应该刷新会话,以便使用新信息更新数据库,但仍然像以前一样回滚。这里解释了如何做到这一点-http://forum.springframework.net/showthread.php?t=5246我已经将其添加到参考文档中。希望这能有所帮助。

Cheers, Mark





相关问题