【问题标题】:Is it possible to specify the order of the tests in Visual Studio c#?是否可以在 Visual Studio c# 中指定测试的顺序?
【发布时间】:2011-07-07 17:37:03
【问题描述】:

我在同一个命名空间中有几个测试。我没有为我的每个单元测试使用像 Test1、Test2 等命名约定。所以,现在当我运行所有测试时,它们并没有按照我想要的顺序运行。有没有办法订购测试?

如果我不按特定顺序执行测试,我的测试不会失败。但是,我只是想按照它们在我的测试用例电子表格中的顺序执行它们。

【问题讨论】:

  • 你会得到很多 cmets 说如果他们是正确的单元测试应该没关系!
  • 它们是否正确无关紧要......
  • 我同意正确的单元测试概念,但是对于调试大量测试,能够记录测试运行的顺序可能很有用。这将允许调试测试使它们是正确的。

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


【解决方案1】:

您的测试不应依赖于顺序;这打破了测试不相互依赖的概念。缺乏在 Visual Studio 中对测试进行排序的能力反映了这一概念。

【讨论】:

  • 然后定义如何有一个称为 Ordered Test 的测试类型,您可以在其中选择要运行的单元测试以及运行顺序。
【解决方案2】:

您正在寻找的答案是肯定的。尽管我同意隔离原则,但在某些情况下您需要测试一系列事件。在 VS 2010 中,您可以创建一个新的“有序测试”来按顺序捆绑和测试一组测试。

【讨论】:

  • @GlennFerrieLive 一个代码示例或链接到“有序测试”实际上是什么会很棒!
  • @iGanja - 这是一个示例。我将其拉上拉链并将其放在我的 Blob 商店 - j.mp/so-tests-sample
【解决方案3】:

哦,伙计,你违反了主要的单元测试规则之一——“隔离”。

测试不应该有任何依赖顺序。不要等待答案,去重构你的测试以真正相互独立。相信我,现在做比较好:)

【讨论】:

  • 谢谢!我的测试不依赖,但我只是希望它们按照它们在我的测试用例电子表格中的顺序执行。
  • 我知道这个问题有点老了,但我也有同样的问题。我有两个独立的测试,它们与我无法控制的数据库进行通信。为了进行正确的测试运行,我需要在停用测试之前运行激活测试。有办法吗?这是否也违反了隔离的“主要”单元测试规则?因为我想使用单元测试来验证我与数据库服务器的通信是否正常,所以我不想只为我的单元测试托管我自己的测试数据库。
  • 您所说的测试是集成测试。基本上还有另一个规则。我认为在您的情况下,您需要 Setup/TearDown 之类的东西进行测试。安装程序会进行激活。完全隔离的集成测试很难实现,因为它有太多的依赖项。
【解决方案4】:

Visual Studio 有一个用于有序测试的内置模板(假设您使用的是 MSTest 框架)。如果您在测试项目中打开上下文菜单,它可以在“新测试”菜单下或直接作为“有序测试”使用。以前从未使用过,但我假设如果您在解决方案中运行所有测试,您的测试仍会以未定义的顺序执行。

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 2018-06-26
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多