Вместо TestCaseAttribute
, если у вас есть сложные данные для использования в качестве тестового примера, вы должны взглянуть на TestCaseSourceAttribute
TestCaseSourceAttribute используется в параметризованном методе теста для идентификации свойства,метод или поле, которые будут предоставлять требуемые аргументы
Вы можете использовать один из следующих конструкторов:
TestCaseSourceAttribute(Type sourceType, string sourceName);
TestCaseSourceAttribute(string sourceName);
Это объяснение из документации :
Если указан sourceType, он представляет класс, предоставляющий контрольные примеры.Он должен иметь конструктор по умолчанию.
Если sourceType не указан, используется класс, содержащий метод test.NUnit создаст его, используя конструктор по умолчанию или - если аргументы предоставлены - соответствующий конструктор для этих аргументов.
Так что вы можете использовать его, как показано ниже:
[Test]
[TestCaseSource(nameof(MySourceMethod))]
public void SendDataToAgregator_GoodVariables_ReturnsOn(string agrID,string devID, Dictionary<TypeMeasurement, double> measurement)
{
}
static IEnumerable<object[]> MySourceMethod()
{
var measurement = new Dictionary<TypeMeasurement, double>();
// Do what you want with your dictionary
// The order of element in the object my be the same expected by your test method
return new[] { new object[] { "agr1", "askdwskdls", measurement }, };
};