C# 是否有任何方法可以使用一些库以编程方式使用MSTest执行测试用例

C# 是否有任何方法可以使用一些库以编程方式使用MSTest执行测试用例,c#,unit-testing,testing,dll,mstest,C#,Unit Testing,Testing,Dll,Mstest,我对使用MSTest.exe或通过测试资源管理器执行不感兴趣,而是通过普通c#代码(不使用进程)执行。 我想要一个功能,外部用户可以使用webAPI触发测试执行,并将trx结果作为响应返回。我可以通过使用Process object调用MSTest.exe来实现这一点。但问题是,我不能在web服务器上安装MSTest.exe,因为webAPI(用于触发测试运行)将托管在该服务器上,因此我无法继续执行Process object(或批处理文件执行)。 我认为一种可能的解决方案是,如果有任何dll或

我对使用MSTest.exe或通过测试资源管理器执行不感兴趣,而是通过普通c#代码(不使用进程)执行。 我想要一个功能,外部用户可以使用webAPI触发测试执行,并将trx结果作为响应返回。我可以通过使用Process object调用MSTest.exe来实现这一点。但问题是,我不能在web服务器上安装MSTest.exe,因为webAPI(用于触发测试运行)将托管在该服务器上,因此我无法继续执行Process object(或批处理文件执行)。 我认为一种可能的解决方案是,如果有任何dll或nuget包允许使用传递给MSTest.exe的类似参数执行测试用例(如测试项目dll、类别等),那么我不需要在web服务器上安装MSTest.exe,而是可以调用该dll,获取结果并返回它们。
但是我不确定是否有这样的dll或nuget包。

关于您提供的一些信息:

是的,有一种方法,您可以创建一个
.bat
文件来执行项目文件中的
目标。或者您可以直接从cmd或powershell执行它们

"msbuild" yourproject.proj /target:RunTest

有了NUnit测试框架,这是可能的,所以我没有使用MSTest,而是切换到NUnit

ITestEngine engine = TestEngineActivator.CreateInstance();
TestPackage package = new TestPackage("path/to/assembly");
ITestRunner runner = engine.GetRunner(package);
XmlNode result = runner.Run(this, TestFilter.Empty);

添加nuget包“nunit.engine.api”和“nunit.engine”以使用此功能。进行这些调用的类被假定为实现ITestEventListener。

单元测试只是方法,您可以像运行任何其他方法一样运行它们。但是你为什么要这样做呢?可能的重复:像这样的问题只能用更多的上下文信息来正确回答,比如你想做什么,你希望实现什么。帮助我们帮助您。更新的问题描述,如果有解决方案,请与我们分享。我更新了问题描述,请仔细阅读并让我知道您是否有解决方案