如何在 VS2017 中分析单元测试

Posted

技术标签:

【中文标题】如何在 VS2017 中分析单元测试【英文标题】:How can you profile unit tests in VS2017 【发布时间】:2017-11-12 12:11:52 【问题描述】:

VS2017 具有分析应用程序的能力。是否也可以分析单元测试?

【问题讨论】:

【参考方案1】:

我在VS专业版下,也不可用。

它可能需要 VS 企业版。

另请参阅 https://social.msdn.microsoft.com/Forums/en-US/49513731-23e6-4b65-acce-ed0a98e19b59/no-profile-test-option-in-context-menu-on-test-explorer-in-visual-studio-professional-2013?forum=vsunittest 和https://visualstudio.microsoft.com/vs/compare/

【讨论】:

【参考方案2】:

是的,有。右键单击单元测试并选择“配置文件测试”。

但这仅在企业版和专业版中可用。

【讨论】:

谢谢哈巴库克。我正在使用社区,这就是它不可用的原因 这似乎只适用于 MSTest,不适用于 NUnit、XUnit?!【参考方案3】:

根据 @Wizou 的其他回答,我在 VS2019 专业版中缺少分析单元测试的选项。

相反,我所做的是:

首先打开一个命令行窗口,然后导航到单元测试 dll 的构建输出所在的目录 运行vstest.console.exe 告诉它要加载和测试运行的特定dll,例如vstest.console.exe MyProject.Test.dll /Tests:TestFooBar,并检查它是否有效 现在,在 VS2019 分析器中执行相同的操作: 选择“可执行文件”的目标并找到 vstest.console.exe(提示:我的是 C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TestWindow \vstest.console.exe 命令行选项如上 单元测试 DLL 所在的工作目录 启动分析会话,享受结果。

注意:您可能会发现大部分时间都被测试框架加载、静态构造函数、反射和 JITing 事物所支配,并且有太多噪音无法确定实际测试的哪些部分是缓慢的。为了提供帮助,这个肮脏的技巧非常有效:

[TestMethod]
public void TestFooBar()

    for (int i = 0; i < 10000; i++) // extra iterations for profiling. Vary this number if 10k is too small
    
        // your normal unit test which you'd only run once goes here
    


【讨论】:

以上是关于如何在 VS2017 中分析单元测试的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android Studio 中分析测试?

如何在 TestNG 单元测试类中分配类级别数据

Visual Studio 2015 如何分析单个单元测试

如何使用注释在 testng + maven 中分离单元测试和集成测试?

VS 2017 中的创建单元测试在哪里?

在 Go 中分离单元测试和集成测试