找不到具有 URI 或 FriendlyName 的 vstest 测试记录器

Could not find vstest test logger with URI or FriendlyName

我正在尝试按照这篇文章 Writing loggers for command line test runner vstest.console.exe 实施我的自定义 vstest 记录器 Writing loggers for command line test runner vstest.console.exe 我在 VS 解决方案中有 3 个项目。

类库1 仅包含一个示例 Service class.

public class Service
    {
        public int GetDocumentNumber(Guid documentId)
        {
            if (documentId == Guid.Empty)
            {
                throw new ArgumentException("Document id is empty guid.");
            }

            return 178;
        }
    }

SimpleLoggerVSTest(类库) 仅包含一个 class。 ITestLogger 是来自 Microsoft.VisualStudio.TestPlatform.ObjectModel 的接口。

[ExtensionUri("logger://SimpleConsoleLogger/v1")] /// Uri used to uniquely identify the console logger. 
[FriendlyName("SimpleLogger")] /// Alternate user friendly string to uniquely identify the logger.
        public class SimpleLogger : ITestLogger
        {
            public void Initialize(TestLoggerEvents events, string testRunDirectory)
            {
                Console.WriteLine("++++ Initialize ++++");
            }
        }

UnitTestProject 仅包含一项测试 class.

[TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            // Arrange 
            Guid documentId = Guid.NewGuid();
            Service service = new Service();

            // Act
            var res = service.GetDocumentNumber(documentId);

            // Assert
            Assert.AreEqual(res, 178);
        }

        [TestMethod]
        public void TestMethod2()
        {
            // Arrange 
            Guid documentId = Guid.Empty;
            Service service = new Service();

            // Act
            var res = service.GetDocumentNumber(documentId);

            // Assert
            Assert.AreEqual(res, 178);
        }

        [TestMethod]
        [ExpectedException(typeof(ArgumentException))]
        public void TestMethod3()
        {
            // Arrange 
            Guid documentId = Guid.Empty;
            Service service = new Service();

            // Act
            service.GetDocumentNumber(documentId);
        }
    }

UnitTestProject 引用了第一个 ClassLibrarySimpleLoggerVSTest

我厌倦了在 Developer Command Prompt for VS 2017 中执行以下命令。

cd C:\Users\User\source\repos\Solution2\UnitTestProject1\bin\Debug
vstest.console.exe UnitTestProject1.dll /TestAdapterPath:. /Logger:SimpleLogger

我收到以下错误:

Could not find a test logger with URI or FriendlyName 'SimpleLogger'.

我做错了什么?你能帮帮我吗?

编辑: 所以,我听说这可能是由 Visual Studio 的旧版本引起的。但是我有 15.6.3.

确保您的 SimpleLogger class 存在于名称以 testlogger.dll 结尾的程序集中。