2008-09-24 46 views
0

我使用Springibe和NHiberante(HibernateTemplate)來實現我的DAO。Spring.net + Nhibernate集成測試通過它們不應該

我也有一些集成測試,從'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"/>

的測試通過悄悄地隱藏錯誤。

我使用SetComplete()測試它,並檢查數據庫的變化,但我認爲這種測試的整體思路是不這樣做。

誰能告訴我如何解決這個問題?

非常感謝!如果我必須真正執行SQL腳本來查看它們是否工作,那麼使用這種類型的Spring測試有什麼好處?

+0

我不知道你的春季測試的意思。 我不是一個春季用戶(我更喜歡Castle Windsor),我通常會把它留給我的測試。也許你可以在這裏提出一個更加針對該主題的新問題。 – 2008-09-25 22:46:02

回答

1

如果你在你映射了語法錯誤,那麼NHibernate的將失敗config.BuildSessionFactory()

但對於拼寫錯誤/不存在的數據庫對象,NHibernate的知道的唯一方法是實際運行查詢...因此,您可能會使用一些集成測試來測試單個實體上的插入/選擇,以確保它可以正常工作。

不確定這與Spring.NET有什麼關係。

2

在測試基於NH的DAO時,您應該刷新會話,以便數據庫用新信息更新,但仍像以前一樣回滾。如何做到這一點在這裏解釋 - http://forum.springframework.net/showthread.php?t=5246我已經將它添加到參考文檔。希望這可以幫助。

乾杯, 馬克

相關問題