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