Если у меня есть следующий объект домена:
public class Customer
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual ISet<Order> Orders { get; set; }
public Customer()
{
Orders = new HashedSet<Order>();
}
public virtual void AddOrder(Order order)
{
order.Customer = this;
Orders.Add(order);
}
}
со следующим отображением NHibernate:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Examples" assembly="Examples">
<class name="Customer">
<id name="Id">
<generator class="guid.comb" />
</id>
<property name="Name" length="50"/>
<set name="Orders" table="CustomerOrder" cascade="all-delete-orphan" lazy="true">
<key column="CustomerId"/>
<many-to-many class="Order" column="OrderId"/>
</set>
</class>
</hibernate-mapping>
Есть ли какое-либо значение в этом тесте?
[Test]
public Save_NameWritten_SameNameIsReadback()
{
var expected = new Customer { Name = "Fred Quimby" };
_repo.Save(c);
var actual = _repo.Find(expected.Id);
Assert.AreEqual(expected.Name, actual.Name);
}
Люди обычно проверяют свой уровень устойчивости таким образом? Убедиться, что каждое поле сохраняется индивидуально? Я, честно говоря, не уверен, что лучше всего делать что-то подобное. Я вижу тестирование чего-то с длинными строками и отношениями родитель / потомок - но как насчет целых чисел и дат? Это перебор?
Я просто говорю о слое постоянства, а не о бизнес-логике на уровне домена. Для этого я бы посмеялся над хранилищем, тогда как здесь я проверяю, что хранилище действительно сохранило то, что я сказал сохранить. Что если кто-то забудет отобразить поле или у него есть фиктивная длина строки в отображении?
Существуют ли какие-либо инструменты для автоматической генерации таких тестов в .NET? Или это "плохо"?