Не отображаются результаты отдельных тестов в списке в обозревателе тестов VS2019 при использовании TestCaseSource

Я провожу своего рода интеграционный тест - тестирую HTTP 200 с некоторыми конечными точками REST API. Во всяком случае, для моего вопроса это не важно.

Это мой тест:

using NUnit.Framework;
using NUnit.Framework.Internal;

namespace EndpointTests
{
    [TestFixture]
    public class Tests
    {
        public class EndPoint
        {
            // just a container for URL, bearer token and so on
        }

        private static IEnumerable<EndPoint> EndPoints()
        {
            // this function returns a list of test data objects, about 150 pcs
        }

        [Test]
        [TestCaseSource(typeof(EndpointTests.Tests), nameof(EndPoints))]
        public async Task Should_Respond_Http200OK_When_Requested(EndPoint endPoint)
        {
            Assert.AreEqual( ... );
        }
    }
}

У меня есть IEnumerable список из примерно 150 объектов, который, в свою очередь, содержит данные, которые я использую для подачи моей тестовой функции (вернее: это мой TestCaseSource). Я знаю, что Visual Studio правильно выполняет все 150 тестов, как и ожидалось. Проблема в том, что я не вижу отдельных результатов.

Мой вопрос

Is it possible to have Visual Studio to print each individual test result in a list in the Test Explorer?
Like this?

This is what I want to achieve


person Hauns TM    schedule 10.10.2019    source источник


Ответы (1)


Учитывая ваше определение теста, NUnit создаст набор тестов с именем Should_Respond_Http200OK_When_Requested, содержащий 150 тестовых примеров. Все тестовые примеры будут иметь одно и то же имя, которое не будет отображаться в вашем вложении, но, вероятно, будет похоже на Should_Respond_Http200OK_When_Requested(<EndPoint>).

У самого NUnit нет проблем со 150 одноименными тестами. Есть и другие способы идентификации тестов. TestExplorer, однако, использует это имя для различения тестов. Он рассматривает эту ситуацию как один тест, дающий 150 результатов. Эти результаты должны быть видны, когда вы выделяете тест, но это не очень удобный дисплей.

При создании имени теста NUnit использует строковое представление каждого аргумента. Если вы дадите своему EndPoint классу ToString() переопределение, то NUnit будет использовать это для отображения. Если представление уникально, TestExplorer распознает их как отдельные тесты.

person Charlie    schedule 10.10.2019