Есть ли аннотация для чтения файла в тесте? Если да, то в каких рамках? xUnit? nUnit?
Насколько я знаю, это должен быть очень специфический формат, который служит одним целям, но не имеет его для других. Так что, если фреймворк сможет читать JSON, они должны будут его поддерживать, и будут поступать запросы на поддержку XML, Open XML и так далее, так что я могу понять, почему фреймворки тестирования не поддерживают это прямо из коробки.
Однако вы можете использовать атрибуты для предоставления входных параметров для ваших тестов с использованием различных платформ:
MSTest ("управляемый данными tests ") со значениями в атрибутах:
[DataTestMethod]
[DataRow(12,3,4)]
[DataRow(12,2,6)]
[DataRow(12,4,3)]
public void DivideTest(int n, int d, int q)
{
Assert.AreEqual(q, n / d);
}
NUnit (« параметризованные тесты ») со значениями в массиве:
[TestCaseSource("DivideCases")]
public void DivideTest(int n, int d, int q)
{
Assert.AreEqual(q, n / d);
}
static object[] DivideCases =
{
new object[] { 12, 3, 4 },
new object[] { 12, 2, 6 },
new object[] { 12, 4, 3 }
};
And xUnit можно расширить до читать данные из файла JSON, указанного в атрибуте и т. Д.
Но в вашем случае, если вы просто хотите подготовить JSON файл, содержащий желаемый результат вашего метода, вы можете прочитать его самостоятельно, используя Newtonsoft. Json и CollectionAssert.AreEqual(expected, actual, comparer)
, используя свой собственный компаратор для InvoiceGeneratorDetailResponse
:
public void Foo_Bars_The_Foo()
{
// Arrange
var classUnderTest = ...
var expectedJson = File.ReadAllText("bar_output.json");
var expected = JsonConvert.DeserializeObject<List<InvoiceGeneratorDetailResponse>>(expectedJson);
// Act
var result = classUnderTest...
// Assert
var invoiceDetailComparer = new ...
CollectionAssert.AreEqual(expected, result, invoiceDetailComparer);
}