Как передать строку и словарь в тестовых случаях NUnit? - PullRequest
0 голосов
/ 20 мая 2018

Я хочу сделать тест для моего метода, и я могу передать 2 строковые переменные, но я не знаю, как пройти Dictionary<,>.

Это выглядит так:

[Test]
[TestCase("agr1", "askdwskdls", Dictionary<TypeMeasurement,double>)]
public void SendDataToAgregator_GoodVariables_ReturnsOn(string agrID,string devID, Dictionary<TypeMeasurement, double> measurement)
{

}

TypeMeasurement - это enum, и я знаю, что это не так, как вы передаете словарь, но я не знаю, как, поэтому я помещаюэто там, чтобы вы знали, что я хочу сделать.

1 Ответ

0 голосов
/ 20 мая 2018

Вместо 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 }, };
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...