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

Jos*_*man 2 c# vstest

我正在尝试vstest通过遵循本文来实现我的自定义记录器,为命令行测试运行程序vstest.console.exe编写记录器我在VS解决方案中有3个项目。

ClassLibrary1 仅包含一个示例Service类。

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

            return 178;
        }
    }
Run Code Online (Sandbox Code Playgroud)

SimpleLoggerVSTest(ClassLibrary)仅包含一个类。的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 ++++");
            }
        }
Run Code Online (Sandbox Code Playgroud)

UnitTestProject 仅包含一个测试类。

[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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

找不到带有URI或FriendlyName'SimpleLogger'的测试记录器。

我做错了什么?你可以帮帮我吗?

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

Sat*_*ala 5

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

  • vstest.console.exe 仅在以 testlogger.dll 结尾的程序集中查找 `ITestLogger` 实现。是的,它应该是 somethig_testlogger.dll。 (3认同)