Dotnet test Проблема сбора данных: «Не удалось найти сборщик данных» - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь создать пользовательский сборщик данных для нескольких тестов xUnit, но сталкиваюсь со следующей проблемой:

Сбор данных: не удалось найти сборщик данных 'MyDataCollector'

Чтобы создать рассматриваемый сборщик данных, я следовал руководству в этой статье .

Мой сборщик данных выглядит следующим образом:

namespace Test.DataCollectorLibrary
{
    [DataCollectorFriendlyName("MyDataCollector")]
    [DataCollectorTypeUri("my://new/datacollector")]
    public class MyDataCollector : DataCollector
    {
        int i = 0;
        private string tempDirectoryPath = Path.GetTempPath();
        private DataCollectionEnvironmentContext context;
        private DataCollectionSink dataCollectionSink;
        private DataCollectionLogger logger;

        public override void Initialize(XmlElement configurationElement,
            DataCollectionEvents events,
            DataCollectionSink dataSink,
            DataCollectionLogger logger,
            DataCollectionEnvironmentContext environmentContext)
        {
            events.TestHostLaunched += this.TestHostLaunched_Handler;
            events.SessionStart += this.SessionStarted_Handler;
            events.SessionEnd += this.SessionEnded_Handler;
            events.TestCaseStart += this.Events_TestCaseStart;
            events.TestCaseEnd += this.Events_TestCaseEnd;

            this.context = environmentContext ?? throw new ArgumentNullException(nameof(environmentContext));
            this.dataCollectionSink = dataSink ?? throw new ArgumentNullException(nameof(dataSink));
            this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
        }

        private void Events_TestCaseStart(object sender, TestCaseStartEventArgs e)
        {
            this.logger.LogWarning(this.context.SessionDataCollectionContext, "TestCaseStarted " + e.TestCaseName);
            this.logger.LogWarning(this.context.SessionDataCollectionContext, "TestCaseStarted " + e.TestElement.FullyQualifiedName);
            var filename = Path.Combine(this.tempDirectoryPath, "testcasefilename" + i++ + ".txt");
            File.WriteAllText(filename, string.Empty);
            this.dataCollectionSink.SendFileAsync(e.Context, filename, true);
        }

Я пытаюсь запустить тесты с помощью команды "dotnet test" из каталога, в котором находятся модульные тесты (включая файл проекта C #), например:

[каталог модульных тестов]> dotnet test --collect: "MyDataCollector" --test-adapter-path "../Test.DataCollectorLibrary/bin/Debug/netcoreapp2.0"

Команда вышезапускается в PowerShell.И модульные тесты, и MyDataCollector являются проектами .NET Core 2.0 в решении Visual C #.В приведенной выше команде «dotnet test» «../Test.DataCollectorLibrary/bin/Debug/netcoreapp2.0» - это путь к Test.DataCollectorLibrary.dll .

Вотвывод в консоли PowerShell: enter image description here

В чем здесь проблема?Почему мой сборщик данных не найден?

...