Как установить отображаемое имя для класса, который содержит тесты в xUnit? - PullRequest
1 голос
/ 10 мая 2019

xUnit дает нам свойство DisplayName для атрибута [Fact], чтобы указать, как наш тест должен отображаться в проводнике тестов в Visual Studio.Например:

public class BooksIntegrationTests
{
    [Fact(DisplayName = "GET /api/books returns http status code 200")]
    public Task Get_Books_ReturnsCollectionOfBooks()
    {
        // ... test code
    }
}

Таким образом, вместо отображения имени метода Get_Books_ReturnsCollectionOfBooks тестовый проводник теперь отображает более дружественное имя теста GET /api/books returns http status code 200.

Но есть ли эквивалентный способ указания DisplayNameв классе, который содержит эти тесты?Я бы хотел, чтобы тестовый проводник показывал что-то вроде Integration tests for Books API resource вместо просто имени класса BooksIntegrationTests.

Есть ли способ сделать это с помощью некоторого атрибута класса xUnit?

1 Ответ

1 голос
/ 10 мая 2019

Единственный способ сгруппировать тесты xUnit под более понятными именами в окне Visual Studio Test Explorer - это использовать функцию черт, а затем использовать параметры пользовательского интерфейса в Test Explorer для группировки тестов по признакам, а не по классу. Пример кода:

public class BooksIntegrationTests
{
    [Xunit.TraitAttribute("Category", "Integration tests for Books API resource")]
    [Fact(DisplayName = "GET /api/books returns http status code 200")]
    public void Get_Books_ReturnsCollectionOfBooks()
    {
        // ... test code
    }

    [Trait("Category", "Integration tests for Books API resource")]
    [Fact(DisplayName = "GET /api/books/book returns http status code 999")]
    public void Get_BookByISBN_ReturnsSingleBook()
    {
        // ... test code
    }
}

Тогда ваш Test Explorer будет выглядеть так:

enter image description here

Первая кнопка, обведенная красным кружком, - это кнопка «Показать иерархию тестирования», и ее следует отменить. Справа от него находится раскрывающийся список «Группировать по ...», щелкните его и выберите группирование по «Чертам». Я использовал признак «Категория» для группировки двух тестов xUnit и изобрел другой тест, который возвращает одну книгу, а не коллекцию книг. Используя это представление, оба связанных теста отображаются в разделе «Категория: Интеграционные тесты для ресурса API книг».

Выше для VS2017. Я ожидаю, что VS2019 будет таким же / похожим.

Я не нашел способа сделать точно , что вы пытались сделать, чтобы сделать так, чтобы Группировка по "Классу" показывала более понятные имена в окне Test Explorer. Я попытался вставить атрибуты в файл AssemblyInfo.cs, изменив свойства проекта, и ничего не помогло изменить представление класса. может быть способ, но я не нашел его. Надеюсь, это поможет вам приблизиться к вашей цели.

P.S. Атрибуты «Trait» и «TraitAttribute» выглядят эквивалентными и взаимозаменяемыми. Я показал обе формы в коде, чтобы проиллюстрировать этот момент. Кажется, что «черта» является, возможно, более новой, предпочтительной формой атрибута, поскольку Visual Studio использует эту форму, если вы решите «Упростить» имя.

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