2011-05-20 247 views
0

我們使用NHIbernate,.net和sql server2005。什麼是最mystyfing是使用同一數據庫,同一單元測試,我的朋友都沒有任何消息,並且所有的測試都通過,而與我有我真的錯誤信息:mystyfing單元測試失敗

ERROR [TestRunnerThread] ADOExceptionReporter [(null)]- The DELETE statement conflicted with the REFERENCE constraint "FK_Project_Client". The conflict occurred in database "TestDev", table "dbo.Project", column 'ClientID'. The statement has been terminated. 13:10:02,656 ERROR [TestRunnerThread] SessionImpl [(null)]- could not synchronize database state with session NHibernate.ADOException: could not delete: [Client#875][SQL: DELETE FROM Client WHERE ID = ?] ---> System.Data.SqlClient.SqlException: The DELETE statement conflicted with the REFERENCE constraint "FK_Project_Client". The conflict occurred in database "TestDev", table "dbo.Project", column 'ClientID'. 

在System.Data.SqlClient.SqlConnection.OnError(SQLEXCEPTION 例外,布爾breakConnection)

在 System.Data.SqlClient.SqlInternalConnection.OnError(SQLEXCEPTION 例外,布爾breakConnection)

在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()

在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand的cmdHandler, SqlDataReader的數據流, BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)

在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SQLDATA讀者 DS,RunBehavior runBehavior,字符串 resetOptionsString)

在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(的CommandBehavior cmdBehavior,RunBehavior runBehavior, 布爾returnStream,布爾異步)

在 System.Data .SqlClient.SqlCommand.RunExecuteReader(的CommandBehavior cmdBehavior,runBehavior runBehavior, 布爾returnStream,字符串方法, DbAsyncResult結果)

在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult 結果,字符串方法名,布爾 sendToPipe)

在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()

在 NHibernate的。 Impl.BatcherImpl.ExecuteNonQuery在 NHibernate.Impl.NonBatchingBatcher.AddToBatch(IExpectation 期望)(IDbCommand的 CMD)

在 NHibernate.Persister.Entity.AbstractEntityPersister.Delete(對象 ID,對象的版本,的Int32Ĵ,對象 OBJ,SqlCommandInfo SQL, ISessionImplementor會話,對象[] loadedState)

---完的內部異常棧 trace ---

at NHibernate.Persister.Entity.AbstractEntityPersister。刪除(對象 ID,對象的版本,的Int32Ĵ,對象 OBJ,SqlCommandInfo SQL, ISessionImplementor會話,對象[] loadedState)

在 NHibernate.Persister.Entity.AbstractEntityPersister.Delete(對象 ID,對象版本,對象OBJ, ISessionImplementor會話)

在 NHibernate.Impl.ScheduledDeletion.Execute()

在 NHibernate.Impl.SessionImpl.Execute(IExe可切割 可執行文件)

在 NHibernate.Impl.SessionImpl.ExecuteAll(IList的 列表)

在 NHibernate.Impl.SessionImpl.Execute()

該語句已終止。 像上面的,我有各種其他測試與錯誤信息

失敗

無法與會話

whay我有錯誤消息的任何想法,同步數據庫狀態 ,沒有人知道?

回答

2

所有測試是否相互排斥?那就是他們都跑independently彼此可能是1測試干擾另一個測試。

如果你自己運行測試你會得到同樣的問題?

你也在自己的開發數據庫上運行測試,還是共享開發數據庫?如果是你自己的,那麼data與你的同事完全一樣嗎?

我知道這不是一個嚴格的答案,並且有很多問題,但希望其中的一個問題能夠引導您找到解決方案。

+0

同意。這聽起來像是測試不會自行清理,或者可能測試數據庫和測試實際上並不同步。進行一次性失敗的測試,然後從頭開始重新構建最新的數據庫,並自行運行該測試。 – Sisyphus 2011-05-21 01:54:41