如何在 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 和 testrunco​​nfig 文件的名称进行调整。 工作目录:您的解决方案根路径 选择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 studio 2008如何引用dll

如何在visual studio2008中创建,编译和运行C++程序,

如何在 Visual Studio 2008 中自动删除尾随空格?

Visual Studio 2008 / C#:如何在项目中查找死代码?