, Где единица измерения не сразу очевидна, я думаю, что необходимо пойти шаг вперед и включать единицу измерения в имя. Length_mm, например, должен помочь напомнить разработчикам, что они должны преобразовать длину в мм, если бы пользователь просто ввел его в дюймы.
Вы могли пойти даже шаг вперед (в Вашем коде, не в базе данных) и иметь тип Длины, который заботится об измерительной единице и о возможных преобразованиях. Это - подход шаблона "Количества" в "Аналитической книге" Шаблонов Martin Fowler.
Взгляните на NBuilder . Он позволяет создавать тестовые объекты со случайными данными, увеличивающимися значениями и всем, что вы, вероятно, можете придумать. Все через приятный свободный интерфейс.
В Fluent NHibernate есть функция, которая дает вам все, что указано в вашем списке желаний, за исключением части автоматического заполнения:
Ссылка: http://wiki.fluentnhibernate.org/ Persistence_specification_testing
Однако, учитывая C # с кодовыми контрактами, было бы несложно автоматически создавать допустимые объекты самостоятельно с помощью отражения.
Да, есть. Я обнаружил это при просмотре сеанса № 3 из серии Summer of NHibernate Стивена Болена .
Его компания, Microdesk , разработала утилиту, которая позволит вам сохранять состояние базы данных при построении тестовой оснастки, устанавливать состояние базы данных в начале каждого теста и восстанавливать исходное состояние базы данных по деконструкции тестовых приспособлений.
Загрузите утилиту здесь: Microdesk.Utility.UnitTest
Чтобы узнать, как ее использовать, посмотрите видеоролик Summer of NHibernate session # 3.