我正在尝试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具有第一引用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
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
找不到带有URI或FriendlyName'SimpleLogger'的测试记录器。
我做错了什么?你可以帮帮我吗?
编辑:所以,我听说它可能是由旧版本的Visual Studio引起的。但是我有15.6.3。
确保您的SimpleLogger类存在于程序集中,其名称以testlogger.dll结尾。