基于Visual Studio和Nuget的测试运行器/适配器



最近我了解了基于nuget的适配器/运行程序(http://xunit.github.io/docs/running-tests-in-vs.html)

我试图了解这些运行程序/适配器是如何被VisualStudio识别的,然后被TestWindow使用的。

例如,如果我安装"xunit.runner.visionstudio"nuget包,我的项目中所有基于xunit的测试都会被发现并显示在测试窗口中。

我正在尝试了解VS是如何使用安装在packages文件夹中的软件包挂接测试发现的?

VS和基于nuget的适配器在哪里/如何被钩住?

我试着找到这些信息,但我的谷歌搜索失败了

我检查了这个问题的答案(通过NuGet安装的自定义测试适配器并没有发现测试),它确实说VS将包复制到路径%TEMP%\VisualStudioTestExplorerExtensions,但仅此而已。

由于这涉及到VS内部的许多工作方式,我认为您不会得到完全确定的答案。然而,为了解决你链接到的问题,我看了一堆反汇编的代码,所以我有一个很好的主意。以下是它的工作原理:

  1. 您生成了一个引用名为Sample.TestAdapter的包的项目
  2. VS将Sample.TestAdapter目录从包复制到%TEMP%\VisualStudioTestExplorerExtensions
  3. 某些东西触发了测试发现——重建总是会发生,有时增量构建也会发生。vstest.console.exe在这里对调试很有用
  4. VS启动vstest.discovery.exe,它在VisualStudioTestExplorerExtensions中查找实现ITestDiscoverer的程序集
  5. 如果找到ITestDiscoverer,VS将使用可能包含测试的程序集列表来调用它
  6. 发现的测试将由测试适配器发送回VS

所以,据我所知,这是一个非常简单的基于反射的插件体系结构。希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新