2015-11-02 5 views
0

У меня есть метод испытания со следующей подписью:Могут ли тесты XUnit обрабатывать класс и десятичные параметры одним и тем же методом?

public void TheBigTest(MyClass data, decimal result) 
{ 

И я хотел бы, чтобы запустить это в XUnit 2.1. У меня есть весь класс CalculationData, который работает, если я удалю второй параметр. Но когда я пытаюсь выполнить ожидаемый результат в качестве второго параметра, выполните следующие действия:

[Theory, ClassData(typeof(CalculationData)), InlineData(8893)] 

Это не работает. Тест не выполнен с:

Метод испытания ожидал 2 значения параметров, но 1 значение параметра было .

Любые идеи?

ответ

1

Класс, указанный в атрибуте ClassData, должен быть перечислимым классом, который возвращает все параметры для метода тестирования, а не только первый.

Таким образом, в вашем примере, вам нужно будет что-то вроде:

public class CalculationData : IEnumerable<object[]> 
{ 
    IEnumerable<object[]> parameters = new List<object[]>() 
    { 
     new object[] { new MyClass(), 8893.0m }, 
     new object[] { new MyClass(), 1234.0m }, 
     // ... other data... 
    }; 

    public IEnumerator<object[]> GetEnumerator() 
    { 
     return parameters.GetEnumerator(); 
    } 

    IEnumerator IEnumerable.GetEnumerator() 
    { 
     return GetEnumerator(); 
    } 
} 

Вы можете добавить параметры вашего MyClass класса для улучшения ваших тестовых данных.

+0

Спасибо за ответ @Paul. Несколько часов назад я сам это проработал сам, и мне не удалось это обновить. – Adam