【问题标题】:resharper test runner - how to execute by category?resharper 测试运行器 - 如何按类别执行?
【发布时间】:2015-05-01 09:22:21
【问题描述】:

Resharper 7.1 版

Visual Studio 2012 终极版

两部分问题:

Q1:当我在解决方案资源管理器中选择“运行单元测试”时,resharper 会自动打开一个测试夹具运行器并执行所有测试夹具。但是,我将测试分为两类:1)“长期运行”和 2)“短期运行”。有没有办法在执行这些步骤后让测试运行器只执行“短期运行”?

Q2:在打开测试夹具运行器的情况下,我选择 Group By “Categories”。我看到我上面提到的两个类别。我右键单击“短期运行”并选择“运行测试”。预期只会执行“短期运行”测试;但是,“长期运行”和“短期运行”都执行。有没有办法按类别执行,只执行那个类别?

更新:这是我屏幕上显示的内容

首先:R#->Options->单元测试(常规选项卡)

第二个:来自随机测试装置的示例测试,显示使用情况。

第三:这是我在解决方案资源管理器中执行“运行单元测试”时看到的内容,以及当我右键单击“短期运行”->“运行测试”时看到的内容(在任何一种情况下,“长时间运行" 也执行)

【问题讨论】:

  • 请注意,“long running”是 Running(显示在第三张图片中)。根据我读过的内容和其他人的尝试,这不应该是 Running。我似乎无法确定是什么导致了这个问题。我已尝试多次重新启动 Visual Studio。我还确认确实保存了 Resharper 选项。

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


【解决方案1】:

长时间运行的测试是否真的在运行?我知道这似乎是一个愚蠢的问题,但是如果长期和短期运行的测试共享一个测试夹具,它们可能看起来正在运行,如您发布的屏幕截图所示,但它只是运行的共享夹具,而不是实际的测试。换句话说,测试夹具在结果树中获得一个节点,如果它被测试共享,它可以在树中出现多次。在夹具运行时,测试运行程序不知道要运行什么测试,因此将树中的所有夹具节点标记为正在运行,尽管只有共享夹具本身在运行。然后它将运行实际测试,并且只有运行的测试被标记为正在运行。

【讨论】:

  • 哇。不是一个愚蠢的问题。你搞定了:在运行时,看起来好像“长时间运行”实际上正在运行。但是当“short running”完成后,“long running”会自动切换到 IGNORED 状态。
  • 我给 jetbrains 的员工写了一封电子邮件,要求他们重新审视这种行为。谢谢citizenmatt。
【解决方案2】:

第一步是将类别属性应用于测试方法(在 xUnit.Net 中,您可以使用名称为 CategoryTraits。(如果您已将测试与测试类/固定装置分开,您可以将这些属性应用于类。)

然后,基于这些类别,您可以使 R# 仅执行具有指定类别之一的测试方法。您可以在 RESHARPER|Options 对话框中执行此操作。在单元测试下,在常规选项卡上,有一个输入字段。

【讨论】:

  • Resharper->Options->UnitTesting->“不包括类别..”中有一个选项(逗号分隔)。我在列表中添加了“长期运行”(没有引号或逗号 - 我只想排除一项)。结果:所有测试仍然相对于上述 Q1 和 Q2 运行。我希望它排除“长期运行”。有什么想法吗?
  • 您是否将属性应用于每种测试方法,是否还确保您在某处没有拼写错误?
  • 我添加了三张图片展示了我尝试过的内容,您是否发现任何拼写错误/技术问题?
  • 嗯。没有什么明显的。我希望这也能奏效。您可以尝试避免类别中的空格,即将其替换为“LongRunning”或某事。类似...
  • 这应该是你的问题@sapbucket的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
相关资源
最近更新 更多