Есть несколько вещей, которые могут происходить.
1) Сбой обновления, и NHibernate вызывает исключение, которое где-то проглатывается - это может произойти в зависимости от того, как вы настроили вещи. Поэтому в VS убедитесь, что все исключения вызовут перерыв.
2) Обновление кэшируется и не записывается напрямую в БД - вы можете принудительно записать данные, используя Repository.Flush();
3) Вы уверены, что _projects [0] прочитан из БД - я предполагаю, что это происходит в TestSetup? В противном случае NHibernate не будет осознавать это как объект, который находится под его «контролем».
Кстати: хорошая практика - читать данные, которые вы собираетесь изменить, в самом тесте, а затем отменить это изменение, вернув БД в исходное состояние. Таким образом, ваша тестовая БД не будет изменена вашим тестированием.
BTW2 - В приведенном выше тесте, если project.Name уже обновлялось один раз, т.е. тест успешно выполнен. Затем в следующий раз тест завершится успешно, даже если само обновление завершится неудачно. Способ избежать этого - добавить DateTime к проекту. Имя, не устанавливайте для него фиксированное значение.