Можно ли задать имя всех тестов, запускаемых с помощью TestCaseSource? - PullRequest
0 голосов
/ 11 июня 2019

У меня есть сотни тестов, которые выполняются с использованием атрибута TestCaseSource.Эти тесты разделены на различные IEnumerable<TestCaseData> структуры и выполняются для одного и того же теста.Я не могу придумать хороший способ для каждого теста в IEnumerable<TestCaseData> иметь одно и то же имя теста.

Я не хочу звонить SetName каждому человеку TestCaseData.Наилучший способ, который я до сих пор думал, - это иметь соотношение тестов 1: 1 к наборам TestCaseData, и просто каждый тестовый набор наследует имя теста.Однако это приводит к большому количеству повторяющегося кода, потому что тесты делают то же самое, меняются только данные.

То, что у меня сейчас есть:

public static class TestCases
{
    public static IEnumerable<TestCaseData> SingleOperations
    {
        get
        {
            yield return new TestCaseData("", "").Returns(0);
            // 100s of more test cases.
        }
    }

    public static IEnumerable<TestCaseData> MultipleOperations
    {
        get
        {
            yield return new TestCaseData("", "").Returns(0);
            // 100s of more test cases.
        }
    }

    // Multiple more sets of IEnumerable<TestCaseData>.
}
[TestFixture]
public class LevenshteinTests
{
    [TestCaseSource(typeof(TestCases), nameof(TestCases.SingleOperations))]
    public int Foo_Bar_SingleOperations(string a, string b)
    {
        return Foo.Bar(a, b);
    }

    [TestCaseSource(typeof(TestCases), nameof(TestCases.MultipleOperations))]
    public int Foo_Bar_MultipleOperations(string a, string b)
    {
        return Foo.Bar(a, b);
    }

    // Multiple more tests that do the same thing.
}

Есть лилюбой способ добиться следующего?

[TestFixture]
public class LevenshteinTests
{
    [TestCaseSource(typeof(TestCases), nameof(TestCases.SingleOperations))]
    [TestCaseSource(typeof(TestCases), nameof(TestCases.MultipleOperations))]
    // Multiple more sets of TestCaseSource.
    public int Foo_Bar_Operations(string a, string b)
    {
        return Foo.Bar(a, b);
    }
}

Где я могу легко добавить индивидуальное имя для всех тестовых случаев каждого TestCaseSource?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...