2 つの xml ファイルを処理してテキスト ファイルを生成するクラスがあります。
次のことを行う、このクラスに対して個別に合格または不合格になる一連の単体/統合テストを作成したいと思います。
- 入力 A と B に対して、出力を生成します。
- 生成されたファイルの内容を、期待される出力の内容と比較します
- 実際の内容が予想される内容と異なる場合、失敗し、違いに関するいくつかの有用な情報を表示します。
以下は、クラスのプロトタイプと、単体テストでの最初の刺し傷です。
この種のテストに使用すべきパターンはありますか?それとも、人々は無数の TestX() 関数を書く傾向がありますか?
NUnit とのテキスト ファイルの違いを理解するためのより良い方法はありますか? テキストファイル差分アルゴリズムを埋め込む必要がありますか?
class ReportGenerator
{
string Generate(string inputPathA, string inputPathB)
{
//do stuff
}
}
[TextFixture]
public class ReportGeneratorTests
{
static Diff(string pathToExpectedResult, string pathToActualResult)
{
using (StreamReader rs1 = File.OpenText(pathToExpectedResult))
{
using (StreamReader rs2 = File.OpenText(pathToActualResult))
{
string actualContents = rs2.ReadToEnd();
string expectedContents = rs1.ReadToEnd();
//this works, but the output could be a LOT more useful.
Assert.AreEqual(expectedContents, actualContents);
}
}
}
static TestGenerate(string pathToInputA, string pathToInputB, string pathToExpectedResult)
{
ReportGenerator obj = new ReportGenerator();
string pathToResult = obj.Generate(pathToInputA, pathToInputB);
Diff(pathToExpectedResult, pathToResult);
}
[Test]
public void TestX()
{
TestGenerate("x1.xml", "x2.xml", "x-expected.txt");
}
[Test]
public void TestY()
{
TestGenerate("y1.xml", "y2.xml", "y-expected.txt");
}
//etc...
}
アップデート
差分機能のテストには興味がありません。より読みやすいエラーを生成するために使用したいだけです。