7

我正在测试一个相当大的项目(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 类别的测试
  • ETC...

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

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

先感谢您。

4

4 回答 4

6

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

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

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

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

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

于 2013-05-20T12:47:41.473 回答
1

对于 VS2010 中的分组,使用.vsmdi可以在Test List Editor.

至于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 窗口中看到平面层次结构。

于 2013-05-17T07:02:18.907 回答
1

测试资源管理器仅显示 TestFilter/InnerTests 布局之后的组。

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

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

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

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

Trait:"MainTestType1"  Trait:"SubTestType3"
于 2013-05-15T07:00:54.087 回答
0

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

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

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

于 2014-07-15T04:12:06.503 回答