【问题标题】:Visual Studio 2012 test categories hierarchy (Test Explorer)Visual Studio 2012 测试类别层次结构(测试资源管理器)
【发布时间】:2013-05-11 10:45:01
【问题描述】:

我正在测试一个相当大的项目(C#,VS2012),我需要在测试层次结构中安排我的单元测试(例如:现在我有 43 个测试用例)。我确实需要层次结构。

我已经定义了测试类别,并且测试资源管理器按特征显示测试用例。我有这种方式的类别(一个测试有几个类别)

  • TestCase01:MainTestType、SubTestType、SubsubTestType
  • ...
  • TestCase10:MainTestType、SubTestType、SubsubTestType
  • TestCase11:MainTestType、SubTestType2、SubsubTestType2
  • ...
  • TestCase15:MainTestType、SubTestType2、SubsubTestType2

定义如下:

    [TestMethod]
    [TestCategory("MainTestType")]
    [TestCategory("SubTestType")]
    [TestCategory("SubsubTestType")]
    public void MyTestCase()
    { /* etc. */

但测试资源管理器显示下一个:

  • MainTestType:所有具有 MainTestType 类别的测试
  • SubTestType:所有具有 SubTestType 类别的测试
  • 等等……

所以我真的很怀念等级制度。我试过“Cat1\Cat2\Cat3”,甚至用/。但没有显示层次结构。你知道怎么做,或者可以为我做的免费插件吗?

我也需要这些类型的分类,因为我们经常从命令行运行测试,而 mstest.exe 可以运行一个类别的测试(例如所有 MainTestType 或 SubTestType)。 (我坚持使用 mstest,因为一半的团队使用 vs2010)。但是解决方案对于vs2012来说已经足够了。

提前谢谢你。

【问题讨论】:

  • 您是否尝试使用 VS Update 2 中的Playlists?我不知道为您维护这些播放列表有多容易,但如果这真的对您有帮助,您可以尝试一下。
  • 一个已知的播放列表,但我正在寻找一个分层分类(可能是一个插件)。但也许不可能,我只是好奇
  • 我以前没见过。您可以尝试使用 R#,如果 R# 单元测试资源管理器可以做到这一点,但我不认为它可以。
  • 大约 2 周前在试用版中尝试过,我找不到选项。 R# 的另一个问题是它不是免费的,并且覆盖了很多好的 VS 功能。
  • cseppento,你能做你的分层测试解决方案吗?

标签: c# unit-testing testing visual-studio-2012 mstest


【解决方案1】:

由于目前不支持我搜索的内容,我做了下一个解决方法:

  • 构建项目
  • 为所有测试运行 MSText -> .trx 输出
  • 简单的 winforms/wpf 程序,它解析 .trx,获取测试用例并在树形视图中显示它们
  • 现在我们可以从这个应用程序中为选定的节点运行 mstest -> 创建 .trx 输出(可以在 VS 中打开)

我使用 .trx 是因为这样我就不必解析程序集了,mstest.exe 就可以了。 测试类别是这样制作的:

[TestCategory("MainTestType")]
[TestCategory("MainTestType/SubTestType")]
[TestCategory("MainTestType/SubTestType/SubsubTestType")]

所以这是一种简单的解决方法,只有一个二进制文件,开发人员也可以使用。播放列表的问题在于它们也不是分层的。

【讨论】:

  • 你能分享你的实用程序吗,例如在 GitHub 上?
【解决方案2】:

Test Explorer 仅显示遵循 TestFilter/InnerTests 布局的组。

新的测试资源管理器选项卡是一个通用容器。使用特定的适配器/插件/插件,您可以将其他测试框架(NUnit、xUnit、Qunit 等)集成到测试资源管理器中......但这些适配器必须遵循测试资源管理器界面。

因此,测试资源管理器选项卡本身并不支持它,我过去没有找到扩展测试资源管理器选项卡的方法。

也许另一个测试框架将允许您拥有一个层次结构,但这将在另一个自定义选项卡中并具有另一个属性(TestCategory 是一个 MSTest 属性)。

仅供参考,您也可以通过这种方式在测试资源管理器窗口中组合特征

Trait:"MainTestType1"  Trait:"SubTestType3"

【讨论】:

  • 我知道这个,我正在寻找分层组织(视觉)
  • 正如我所说,本机测试资源管理器选项卡中没有可扩展点。它只支持分组和过滤。
  • 无法关闭答案:只能删除。 “可接受的答案”并不一定意味着问题的解决方案
【解决方案3】:

对于 VS2010 中的分组,使用可以在 Test List Editor 中打开的 .vsmdi 文件。

就VS2012而言:

Visual Studio 2012 Update 1 http://www.microsoft.com/visualstudio/eng/visual-studio-update 增加了支持按项目和特征(类别)分组和过滤的增强功能。这篇博文http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/09/how-to-manage-unit-tests-in-visual-studio-2012-update-1-part-1-using-traits-in-the-unit-test-explorer.aspx

详细介绍了这些功能的使用

按类别分组和过滤已完成,将在更新 2 中提供。

我建议您将类别移动到命名空间,这样您就可以在 FullClassName 列的 TestView 窗口中看到平面层次结构。

【讨论】:

  • 我知道这个,我正在寻找分层组织(视觉)
【解决方案4】:

你可以通过将你的第 2 级特征串联你的前两个级别的值来作弊。因此,如果第 1 级是动物,第 2 级是哺乳动物,那么您可以有一个特征“Animal.Mammal”。在测试资源管理器中,您将获得一个用于Level1 [Animal] 的节点,另一个用于Level1 [Plant],然后是一个用于Level2 [Animal.Tiger] 的节点。我相信过滤器支持子字符串匹配,所以这是对其进行排序的一种方法。您仍然看不到树形视图(尽管如果您被绑定并确定您可以尝试扩展 ascii 艺术管道字符,如旧的 DOS 树命令)。

你还有一个问题,就是你不能合并不同的特征(这样所有的鸟都会一直在列表中)。

另一方面,在允许 n 元组特征的同时强制执行层次结构会很尴尬。它必须限制项目位于层次结构顶部的多个路径中,检测和报告周期,在现有内容之上(或矩阵化)使用树控件。此外,当您重构代码并希望保持并行安排测试时,过多的现有结构可能会令人头疼。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 2019-10-25
    相关资源
    最近更新 更多