У меня есть класс, который обрабатывает 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...
}
Обновлять
Я не заинтересован в тестировании функциональности diff. Я просто хочу использовать его для создания более читаемых сбоев.