如何在 Visual Studio 2008 中分析 MsTest 的单元测试?
Posted
技术标签:
【中文标题】如何在 Visual Studio 2008 中分析 MsTest 的单元测试?【英文标题】:How to Profile Unit Tests of MsTest in Visual Studio 2008? 【发布时间】:2010-11-25 01:08:21 【问题描述】:我已经从 Visual Studio 2008 开发版启动了集成测试(它们作为 MSTest 单元测试执行,即使它们实际上是集成测试)。我想在进行测试时进行一些分析。
就我而言,我正在运行一个 MSTest“有序”测试。我想在执行每个有序测试时收集采样数据。
我该怎么做?
附言如果我从命令提示符手动启动 mstest,同时尝试关注command line directions,也许我可以从命令行完成此操作。不幸的是,当我尝试从 Visual Studio 命令提示符启动 VsPerfCLREnv 时,它是“找不到文件”。什么鬼?
【问题讨论】:
我不会这样做;测试的瓶颈可能不是应用程序的瓶颈。 【参考方案1】:我刚刚在 VS2008 中进行了分析。如果它对任何人有帮助,以下是我的工作方式:
-
确保您处于
Debug
配置模式
点击Analyse > Launch Performance Wizard
选择Profile a dynamic link library
输入以下内容:
Dll 路径:您要检测的 dll,位于单元测试项目的 bin\Debug 中
可执行路径:C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe
启动选项参数:/testmetadata:TestList.vsmdi /runconfig:TestRunConfig1.testrunconfig
根据您的 vsmdi 和 testrunconfig 文件的名称进行调整。
工作目录:您的解决方案根路径
选择Instrumentatation
。我没有尝试过采样,所以我无法对此发表评论。
运行新的性能项目
使用这种方法,我发现了我的代码中的瓶颈,单元测试现在快了 15 倍,用户看到的速度提高了 10 倍。
【讨论】:
你知道这是否有望在 VS2010 上工作?我已尝试按照步骤操作(使用 10.0 MSTest.exe 的更新路径),但我不断收到错误“Could not load file or assembly 'VSPerfControl.Interop, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
”。另外,在第 4 步中,您是选择测试项目的 Dll(例如 Foo.Test.dll)还是项目本身(例如 Foo.dll)?
@CalebBell:在 VS2010 中,您可以更轻松地做到这一点。看到这个question。
谢谢,但我有兴趣使用多个单元测试(可能还有整个单元测试套件)作为分析工作的主体。你知道这是否可能吗?甚至是个好主意?也许我应该提出一个新问题,因为我还没有看到任何相关的问题。感谢您回复我!
@CalebBell:我不确定它是否可能,我认为 VS2010 有一个新问题。您选择的 dll 是您想要分析的那个。它将基于 vsmdi 加载测试。【参考方案2】:
不幸的是,有序测试没有可用的“创建性能会话”选项:
如果您有一个简单的单元测试,您将能够创建一个性能会话。
要使用命令行分析,您可以导航到 \Program Files\Microsoft Visual Studio 9.0\Team Tools\Performance Tools,您将在其中看到 vsperfclrenv.cmd 和分析器博客中提到的其他工具。
【讨论】:
以上是关于如何在 Visual Studio 2008 中分析 MsTest 的单元测试?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 2008 中打开使用 Visual Studio 2005 创建的 rdl?
如何在 Visual Studio 2008 或 Visual Studio 2010 中设置 JavaScript 断点
如何在visual studio2008中创建,编译和运行C++程序,