找不到具有 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
引用了第一个 ClassLibrary
和 SimpleLoggerVSTest
。
我厌倦了在 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 结尾的程序集中。
我正在尝试按照这篇文章 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
引用了第一个 ClassLibrary
和 SimpleLoggerVSTest
。
我厌倦了在 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 结尾的程序集中。