私はクラスをテストしていますが、これは他のクラスからかなりの依存関係があります。これを解決するために私はモックを使います。これまでのところうまくいきました。はユニットテストのアプローチが悪いですか?
[Test]
public void DataField_Gets_Properly_Created()
{
// Arrange all those mocks
_dataField = new DataField(dependency1, dependency2, dependency3);
Assert.NotNull(dataField.Id);
// other assertions ...
}
[Test]
public void DataField_Gets_Properly_Saved()
{
var entityList = new List<IEntity>();
var dfId = Guid.NewGuid();
_dataField.SetValue(true, entityList, dfId);
Assert.True(_datenFeld.ValueBoolean);
// other assertions
}
ご覧のとおり、この専用の_dataField
変数を使用します。ご存じのように、私は実際に、最初のテストでデータフィールドを作成できるかどうかをテストします。最初の方法で作成した2番目のテストで同じデータフィールドを使用するのは悪い方法ですか?私はこれが非常にクリーンなコードではないと思います。
私が持っていた2番目のアイデアは、このデータフィールドを[Setup]
に作成することでした。これは非常にきれいではありません。なぜなら、それが作成されたとしても、後でセットアップやテストで作成する必要があるからです。よくわかりません。
その後、実際のクラスをテストするためにデータフィールドのインスタンスが必要なさらに多くのテストが行われる可能性があります。DataField
テストは互いに独立している必要があります。 1つのテストの実行は、他のテストの実行に影響してはなりません。 – Bernard
唯一の方法はセットアップでしょうか?しかし、最初のテストではセットアップの作成がうまくいっているかどうかをテストしました。最初のテストでは、インスタンス化されるデータフィールドに「必要な」フィールドが設定されているかどうかをテストします。 –