Visual Studio 和基于 Nuget 的测试 Runners/Adapters
Visual Studio and Nuget based Test Runners/Adapters
最近我开始了解基于 nuget 的 adapter/runner (http://xunit.github.io/docs/running-tests-in-vs.html)
我试图了解这些 runners/adapters 如何被 Visual Studio 识别,然后被测试 Window 使用。
例如,如果我安装 "xunit.runner.visualstudio" nuget 包,我项目中所有基于 xUnit 的测试都会被发现并显示在测试 Window.
中
我想了解 VS 如何使用安装在包文件夹中的包挂钩测试发现?
Where/how VS 和基于 nuget 的适配器会上瘾吗?
我试图找到这些信息,但我的 google 失败了。 :(
我检查了问题的答案 (Custom test adapter installed via NuGet isn't discovering tests),它确实说 VS 将包复制到路径 %TEMP%\VisualStudioTestExplorerExtensions 但仅此而已。
由于这涉及到很多 VS 的内部工作方式,我认为您不会得到完全确定的答案。但是,为了解决您链接到的问题,我查看了一堆反汇编代码,所以我有一个很好的主意。它的工作原理如下:
- 您构建了一个引用名为 Sample.TestAdapter
的包的项目
- VS 将包中的 Sample.TestAdapter 目录复制到 %TEMP%\VisualStudioTestExplorerExtensions
- 某些东西会触发测试发现 - 重建总是如此,有时增量构建也会如此。 vstest.console.exe 在这里对调试很有用。
- VS 启动 vstest.discovery.exe,它在 VisualStudioTestExplorerExtensions 中查找实现 ITestDiscoverer
的程序集
- 如果找到 ITestDiscoverer,VS 会使用可能包含测试的程序集列表调用它
- 发现的测试由您的测试适配器发送回 VS
据我所知,这是一个非常简单的基于反射的插件架构。希望对您有所帮助。
最近我开始了解基于 nuget 的 adapter/runner (http://xunit.github.io/docs/running-tests-in-vs.html)
我试图了解这些 runners/adapters 如何被 Visual Studio 识别,然后被测试 Window 使用。
例如,如果我安装 "xunit.runner.visualstudio" nuget 包,我项目中所有基于 xUnit 的测试都会被发现并显示在测试 Window.
中我想了解 VS 如何使用安装在包文件夹中的包挂钩测试发现?
Where/how VS 和基于 nuget 的适配器会上瘾吗?
我试图找到这些信息,但我的 google 失败了。 :(
我检查了问题的答案 (Custom test adapter installed via NuGet isn't discovering tests),它确实说 VS 将包复制到路径 %TEMP%\VisualStudioTestExplorerExtensions 但仅此而已。
由于这涉及到很多 VS 的内部工作方式,我认为您不会得到完全确定的答案。但是,为了解决您链接到的问题,我查看了一堆反汇编代码,所以我有一个很好的主意。它的工作原理如下:
- 您构建了一个引用名为 Sample.TestAdapter 的包的项目
- VS 将包中的 Sample.TestAdapter 目录复制到 %TEMP%\VisualStudioTestExplorerExtensions
- 某些东西会触发测试发现 - 重建总是如此,有时增量构建也会如此。 vstest.console.exe 在这里对调试很有用。
- VS 启动 vstest.discovery.exe,它在 VisualStudioTestExplorerExtensions 中查找实现 ITestDiscoverer 的程序集
- 如果找到 ITestDiscoverer,VS 会使用可能包含测试的程序集列表调用它
- 发现的测试由您的测试适配器发送回 VS
据我所知,这是一个非常简单的基于反射的插件架构。希望对您有所帮助。