Может ли 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
класс для улучшения ваших тестовых данных.