次のような単体テストがあります。
[Test]
public void Should_create_person()
{
Assert.DoesNotThrow(() => new Person(Guid.NewGuid(), new DateTime(1972, 01, 01));
}
ここでPersonオブジェクトが作成された、つまり検証が失敗しないと断言しています。たとえば、Guidがnullの場合、または生年月日が1900年1月1日より前の場合、検証は失敗し、例外がスローされます(テストが失敗したことを意味します)。
コンストラクターは次のようになります。
public Person(Id id, DateTime dateOfBirth) :
base(id)
{
if (dateOfBirth == null)
throw new ArgumentNullException("Date of Birth");
elseif (dateOfBith < new DateTime(1900,01,01)
throw new ArgumentException("Date of Birth");
DateOfBirth = dateOfBirth;
}
これはテストのための良いアイデアですか?
注:ドメインモデルの単体テストに古典的なアプローチを採用している場合は、それが何らかの意味を持っています。
Should_create_person
?人を作成するのは何ですか?のような意味のある名前を付けCreating_person_with_valid_data_succeeds
ます。