Невозможно правильно отобразить имена тестовых примеров с помощью TestCaseData Nunit - PullRequest
0 голосов
/ 24 апреля 2020

Допустим, у меня есть метод теста:

[TestCaseSource("TestData")]
public void SomeTest(object[] args)
{
    // Do some testing
}

И метод TestData:

public static IEnumerable TestData()
{
    for (int i = 0; i < 64; i ++)
    {
        BitArray b = new BitArray(BitConverter.GetBytes(i));

        b.Length = 6;

        // Generate boolean args as (true, true, false, false, true, false).
        object[] args = b.Cast<object>().ToArray();

        yield return new TestCaseData((object)args).SetName("{m}{a}");
    }
}

Я не могу получить имена тестовых случаев, чтобы показать полную длину строки аргументов , даже если я заменим {a} на {a:40}.

Все тестовые случаи усекаются, например: SomeTest([False, False, False, False, False, ...]), что делает некоторые тестовые случаи, которые используют одну и ту же усеченную строку, объединенными в один тестовый набор с несколькими результаты, делая чтение менее ясным.

Теперь я могу попытаться удалить приведение (object), используя перегрузку TestCaseData(params object[] args) в TestData, и попытаться выполнить тестирование следующим образом:

[TestCaseSource("TestData")]
public void SomeTest(params object[] args)
{
    // Do some testing
}

И метод TestData:

public static IEnumerable TestData()
{
    for (int i = 0; i < 64; i ++)
    {
        BitArray b = new BitArray(BitConverter.GetBytes(i));

        b.Length = 6;

        // Generate boolean args as (true, true, false, false, true, false).
        object[] args = b.Cast<object>().ToArray();

        yield return new TestCaseData(args).SetName("{m}{a}");
    }
}

За исключением того, что он выдает ошибку Too many arguments provided, provide at most 1 arguments., которую я не могу понять, почему.

...