mystyfing unit тесты не работают

Мы используем NHIbernate, .net и sql server2005. Больше всего мистифицирует то, что при использовании той же базы данных, одних и тех же модульных тестов у моих друзей нет никаких сообщений, и все их тесты проходят успешно, тогда как с моим я получаю сообщения об ошибках:

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 dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)

в System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)

в System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)

в System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, метод String, результат DbAsyncResult)

в System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (результат DbAsyncResult, String methodName, логическое значение sendToPipe)

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

в NHibernate.Impl.BatcherImpl.ExecuteNonQuery (IDbCommand cmd)

в NHibernate.Impl.NonBatchingBatcher.AddToBatch (ожидание IExpectation)

в NHibernate.Persister.Entity.AbstractEntityPersister.Delete (идентификатор объекта, версия объекта, Int32 j, объект obj, SqlCommandInfo sql, сеанс ISessionImplementor, Object [] loadedState)

--- Конец трассировки внутреннего стека исключений ---

в NHibernate.Persister.Entity.AbstractEntityPersister.Delete (идентификатор объекта, версия объекта, Int32 j, объект obj, SqlCommandInfo sql, сеанс ISessionImplementor, Object [] loadedState)

в NHibernate.Persister.Entity.AbstractEntityPersister.Delete (идентификатор объекта, версия объекта, объект obj, сеанс ISessionImplementor)

в NHibernate.Impl.ScheduledDeletion.Execute ()

в NHibernate.Impl.SessionImpl.Execute (исполняемый файл IExecutable)

в NHibernate.Impl.SessionImpl.ExecuteAll (список IList)

в NHibernate.Impl.SessionImpl.Execute ()

Заявление было прекращено. Как и выше, у меня возникают различные другие тесты, которые не дают сообщений об ошибках.

не удалось синхронизировать состояние базы данных с сеансом

Любая идея, почему у меня появляются сообщения об ошибках, кто-нибудь знает?


person learning    schedule 20.05.2011    source источник


Ответы (1)


Все ли тесты исключают друг друга? То есть все они запускают independently друг друга. Возможно, один тест мешает другому тесту.

Если вы запустите тест самостоятельно, возникнет ли у вас такая же проблема?

Также вы запускаете тест в своей собственной базе данных разработчиков или это общая база данных разработчиков? Если это ваш собственный, то data точно такой же, как и ваши коллеги?

Я знаю, что это не совсем ответ, и у него много вопросов, но, надеюсь, один из этих вопросов приведет вас к решению.

person Rippo    schedule 20.05.2011
comment
Согласованный. Похоже, тесты не убираются за собой и / или, возможно, за тестовой базой данных, и тесты на самом деле не синхронизируются. Пройдите тест, который постоянно дает сбой, затем полностью перестройте последнюю версию базы данных с нуля и запустите этот тест самостоятельно. - person Sisyphus; 21.05.2011