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

时间:2018-03-20 09:23:42

标签: c# vstest

我正在尝试按照本文Writing loggers for command line test runner vstest.console.exe实现我的自定义vstest记录器。我在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;
        }
    }

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 ++++");
            }
        }

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);
        }
    }

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

我收到以下错误:

  

无法找到带有URI或FriendlyName'MiniLogger'的测试记录器。

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

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

1 个答案:

答案 0 :(得分:4)

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