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

Другие вопросы по тегам