Я делал модульное тестирование, используя пакет xUnit для моей библиотеки классов. Я хотел бы попробовать подход JSON, а не обычный объектный подход для модульного тестирования, управляемого данными. Однако я нигде не вижу, чтобы это было возможно.
То, на чем я застрял, - это управляемый данными тест. Для MemberData требуются тестовые данные в виде IEnumerable<object[]>
, когда я вызываю данные из файла JSON, они вводятся в мой класс модели данных. Я добавляю их в IEnumerable<object[]>
? Или есть другой способ сделать это?
Вот код, который у меня пока есть:
Это файл json, который содержит 5 тестовых данных:
{
"user": [
{
"name": "John",
"age": 12,
"gender": "Male",
"Hobby": "Reading"
},
{
"name": "Susan",
"age": 34,
"gender": "Female",
"Hobby": "Gardening"
},
{
"name": "Larry",
"age": 24,
"gender": "Male",
"Hobby": "Gaming"
},
{
"name": "Jack",
"age": 3,
"gender": "Male",
"Hobby": "Sleeping"
},
{
"name": "Minnie",
"age": 15,
"gender": "Female",
"Hobby": "Partying"
}
]
}
Это файл класса теста:
private User GetTestData()
{
var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TestData.json");
var reader = new StreamReader(filePath);
var jsonStr = reader.ReadToEnd();
var jsonObj = JObject.Parse(jsonStr);
var testDataObj = jsonObj["user"].ToString();
var testData = JsonConvert.DeserializeObject<User>(testDataObj);
return testData;
}
public static IEnumerable<object[]> ValidUserTestData()
{
//What should I do here?
}
[Theory]
[MemberData(nameof(ValidUserTestData))]
public void Test1()
{
}
Это правильный способ реализации теста такого типа? Или есть ли другие лучшие варианты использования файла JSON в тесте накопителя данных?
Спасибо.