おそらくウサギの穴を塞いでいますが、その価値はStackOverflowに尋ねて、専門家から意見を得ることです。Cで単体テストを書く正しい方法
ユニットテストを作成する正しい方法は何ですか?具体的には、同じプロジェクトから1つ以上の他の関数を呼び出す単体テスト関数がある場合... 他の2つの関数呼び出しをmockedするかどうかを指定します。
例:
単体テスト:AClassはで
[Test]
public void ReadZipFileContainer_Test()
{
AClass aObject = new AClass();
string fileToRead = System.IO.Path.Combine(Directory.GetCurrentDirectory(), @"..\..\TestData\TestFile.zip");
List<string> entityIds = new List<string>() { UtilsClass.kItemId };
Dictionary<string, string> filesData1 = AClass.ReadFileContainer(fileToRead, entityIds);
Assert.AreEqual(filesData1.Count, 1);
}
:
public Dictionary<string, string> ReadZipFileContainer(string fileToRead, List<string> itemIds)
{
Dictionary<string, string> fileContent = new Dictionary<string, string>();
try
{
Dictionary<string, string> entities = CClass.OpenContainer(fileToRead); // => call to another function. Should this call be mocked?
//Process
}
catch (Exception ex)
{
// We return empty directory after closing the container
logger.LogException(ex);
throw;
}
finally
{
CClass.CloseContainer();
}
return fileContent;
}
各個人が個人的な意見を持っていますが、私は最善の方法を探しています。どのように私たちが嘲笑を停止する必要がある行を決定する?
私は何かを書いてポストしてしまった:O質問のパンとバターは意見に基づいているとは思わない - 単体テストは単体テストのテストである。あなたのユニットがコンクリーションに依存している場合、ユニットの外部に何か依存しているので、それは定義上、ユニットテストではありません。依存関係は抽象化されて単体テストを達成するために嘲笑される必要があります。 – Kritner
ユニットテストとユニットテストの作成方法を定義するかなり厳しい規則があります。それらは実際に意見に基づくものではありません。ちょうど私の2c。 –