2016-12-07 5 views
2

Как я могу настроить AutoFixture для следующего испытания блока:AutoFixture UnitTest Параметр Настройка

[Theory, ... ] // <- what goes here? 
public void MyTest(int param1, string param2) 
{ 
    ... 
} 

Первый параметр может принимать случайным образом целые числа, так AutoFixture естественно подходит. Второй не может быть таким же. Мне нужен второй, чтобы принимать значения из динамически созданного списка значений, который неизвестен во время компиляции. Мне нужно сказать это в AutoFixture, но я не знаю, как это сделать.

EDIT:

В моем конкретном случае, что мне нужно, что строка пары быть именем свойства какого-либо типа. Я хотел бы сказать AutoFixtue: «Эй, для Param2, взять случайную строку из этого списка, где список является myType.GetPropertyNames()

ли AutoFixture поддерживает этот сценарий

ответ

1

Если вам нужны случайные значения.? просто использовать [AutoData]:

[Theory, AutoData] 
public void MyTest(int param1, string param2) 
{ 
    ... 
} 

Если вам нужны предопределенные тестовые данные можно использовать [InlineAutoData] в примере ниже параметра stringparam1 будет получить значения, указанного в атрибуте int параметр param2 всегда будет.. random:

[Theory] 
[InlineAutoData("predefined_string_1")] 
[InlineAutoData("predefined_string_2")] 
public void MyTest(string param1, int param2) 
{ 
    ... 
} 
+0

Но вам нужно знать значения во время компиляции. Что делать, если «предопределенные» строки являются именами свойств какого-либо типа? Мне нужно иметь возможность передавать действительные строки в свой тестовый метод без их жесткого кода. Это возможно? –

+0

> «Но вам нужно знать значения во время компиляции». Точно. Если вы хотите проверить какое-то поведение и случайные данные недостаточно, вы _need_ должны знать значения во время компиляции. В противном случае, как вы будете проверять правильность вашей системы, если данные тестового ввода не указаны? –

+0

Я не чувствую, что он должен быть либо полностью случайным, либо полностью жестко закодированным значением. Я хотел бы передать тестовые данные, которые каким-то образом отформатированы для моего теста, чтобы иметь смысл. В моем конкретном сценарии мне нужно, чтобы переменная string была именем свойства некоторого типа. Я хотел бы сказать AutoFixtue: «Эй, для param2, возьмите случайную строку из этого списка, где список - myType.GetPropertyNames()». –

Смежные вопросы