Как исправить неверное представление ReSharper имен тестов? - PullRequest
0 голосов
/ 12 ноября 2018

Я использую NUnit (3.8.1) с Resharper (2018.2.3) следующим образом:

    private static IEnumerable<TestCaseData> GetTests()
    {
        yield return T("foo.bA..r@gmail.com", "foobar@gmail.com");
        yield return T("foo.bA..r@example.com", "foo.ba..r@example.com");
        yield return T("user.name+tag+sorting@example.com", "user.name@example.com");
        yield return T("admin@mailserver1", "admin@mailserver1");
        yield return T("aaaafoo.bA..r@gmail.com", "aaafoobar@gmail.com");
    }

    private static TestCaseData T(string input, string output)
    {
        return new TestCaseData(input, output)
               {
                   TestName = string.Format("'{0}' => '{1}'", input, output)
               };
    }

    [Test]
    [TestCaseSource(nameof(GetTests))]
    public void Normalize(string input, string output)
    {
        //some test here
    }

Но когда я запускаю свои тесты в окне Resharper, я вижу, что мои имена обрезаны какой-то мистической логикой:

invalid resharper test view

Что заставляет мои имена становиться такими? Как это решить?

1 Ответ

0 голосов
/ 17 ноября 2018

Похоже, что у ReSharper возникают проблемы с точками в именах тестовых наборов, когда он запускает параметризованные тесты NUnit: он просто отбрасывает все, что предшествует точке.

Нет такой проблемы с ReSharper, например, с запущенными теориями xUnit, и при этом консольная программа NUnit не возвращает ничего странного, что могло бы повлиять на поведение ReSharper.

Чтобы обойти эту проблему, вы можете предоставить описательное имя для каждого теста, используя метод SetName(), например:

 private static IEnumerable<TestCaseData> GetTests()
    {
        yield return new TestCaseData("foo.bA..r@gmail.com", "foobar@gmail.com").SetName("GMail: dots removed, casing normalized to lower (1)");
        yield return new TestCaseData("foo.bA..r@example.com", "foo.ba..r@example.com").SetName("Example domain: dots intact, casing normalized to lower");
        yield return new TestCaseData("user.name+tag+sorting@example.com", "user.name@example.com").SetName("Example domain: local part stripped from + and everything that follows");
        yield return new TestCaseData("admin@mailserver1", "admin@mailserver1").SetName("Whatever you're checking here");
        yield return new TestCaseData("aaaafoo.bA..r@gmail.com", "aaafoobar@gmail.com").SetName("GMail: dots removed, casing normalized to lower (2)");
    }

Пока вы не используете точки в именах, все будет в порядке:

enter image description here

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