MSTest.TestAdapter与MSTest.TestFramework有什么区别?我什么时候需要哪一个?

时间:2017-11-12 12:23:53

标签: c# .net unit-testing visual-studio-2017 mstest

MSTest.TestAdapterMSTest.TestFramework之间的区别是什么?我何时需要哪一个?

在NuGet描述中,您可以阅读:

MSTest.TestAdapter

  

用于发现和执行基于MSTest Framework的测试的适配器。

MSTest.TestFramework

  

这是MSTest V2,微软测试框架的演变。 +要发现并执行测试,请安装MSTest.TestAdapter。

嗯,不是很有帮助,而且我总是安装两者,因为我不知道应该选择哪一个。奇怪的是,在我的一个测试项目中,我只有MSTest.TestFramework(我猜不出意料),ReSharper仍然可以发现测试。

我对这些套餐的疑问是:

  • 你真的总是需要同时安装它们吗?
  • 为什么即使没有TestAdapter
  • 也能正常工作
  • TestFramework怎么处理?我什么时候需要这个?

GitHub上的项目页面也有很大帮助。唯一的链接

  

您可以阅读有关MSTest V2 here的更多信息。

导航到一个页面,该页面只说明它有多么优秀和开源,但没有任何具体的任何一个包。

3 个答案:

答案 0 :(得分:12)

因此Visual Studio使用一个名为Visual Studio Test Platform的框架来加载测试适配器

https://github.com/Microsoft/vstest

要发现或执行测试用例,VSTest将根据您的项目配置调用测试适配器。 (这就是为什么NUnit / xUnit / MSTest都要求您将测试适配器NuGet包安装到您的单元测试项目中)。所以MSTest.TestAdapter就是出于此目的。

MSTest.TestFramework本身实现了测试框架及其合同。所以你需要添加一个NuGet引用来编写单元测试用例并编译它们。 Visual Studio随后只能使用已编译的项目和测试适配器。

所以问题的最终答案是“你通常需要两者”。

如果您不打算使用Visual Studio,@ Nkosi的其他答案当然是正确的。 MSTest有自己的命令行运行程序,可以在没有测试适配器的情况下运行单元测试项目。

答案 1 :(得分:2)

  

你真的总是需要安装它们吗?

不。为什么? (见下文)

  

为什么即使没有TestAdapter也能正常工作?

还有其他适配器/跑步者可以识别MSTest框架,也可以发现并运行MSTest Framework测试。

  

TestFramework可以做些什么?

因此,通常,测试框架是用于创建/创建测试的,而适配器/运行器发现并执行已发现的测试。

  

我什么时候需要这个?

有多个框架和适配器/跑步者,您可以使用您选择的那个。

答案 2 :(得分:0)

MsTest.TestFramework包含核心框架,其中包括Attributes和Asserts。 MsTest.TestAdapter允许我们发现基于MsTest的测试并执行它们。例如,识别[TestMethod]归因的方法并执行它们。