【问题标题】:how to run nunit tests ordered by categories in same namespace, without mix tests?如何在同一命名空间中运行按类别排序的 nunit 测试,而不进行混合测试?
【发布时间】:2011-06-28 21:54:20
【问题描述】:

我的问题如下:

如果测试用例在同一个命名空间中,我有一个数量,这些测试用例按 A 和 B 类别分类,我需要先运行 A 类,然后运行 ​​B 类。

问题是,当我(在 nunit gui 中)选择类别时,该工具会按照它们出现的顺序运行测试,而不是像我期望的那样按类别。

例如,我有测试用例:

  • WhenUserTriesToAddLineItemGroup [B 类]
  • WhenUserTriesToCreateTopic [A 类]
  • WhenUserTriesToCreateAreas [类别 A]

我需要先运行: WhenUserTriesToCreateTopic 和 WhenUserTriesToCreateAreas 第二: WhenUserTriesToAddLineItemGroup

但它们按照列表中的顺序运行。请问,我该怎么做才能以我需要的方式运行测试?

谢谢!!

【问题讨论】:

  • 单元测试应该相互隔离,以便它们可以按任意顺序运行或一次运行一个。

标签: testing nunit sql-order-by categories


【解决方案1】:

NUnit 建立在任何单个测试都是完全自主的概念之上。如果您在运行测试之前需要完成一些事情,则可能会将它们放入 SetUp 方法中,如果您的测试有任何副作用,您可能有一个 TearDown 方法来撤消这些副作用,但除此之外,它假定任何单个测试都可以随时运行,并且测试顺序无关紧要。这对开发人员有几个好处,因为您可以运行任何一组测试而不必担心其先决条件,并且一个测试的通过/失败条件不依赖于不同测试的通过/失败条件。

我建议您首先重新考虑为什么您的测试有这些限制,并尝试重写它们,以便它们测试更多孤立的功能,并且不具备系统的先决条件。原则上你可以将这些测试组合成一个测试,这样你就可以处理依赖关系,但这通常不是一个很好的解决方案,因为它通常会导致非常大的测试(而单元测试通常是测试非常小的条件或片段的功能)。最好看看您需要测试哪些条件,并从头开始编写每个测试以测试该条件,而不假设您的系统处于任何状态或任何其他测试已经运行。

如果没有关于您要测试什么的更多细节,很难就如何改进您的系统给出具体建议,但总的来说,如果每个测试都是完全自主的,您将充分利用单元测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 2017-12-25
    • 2018-03-07
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多