代码之家  ›  专栏  ›  技术社区  ›  mark

在执行开始之前,是否可以在运行时对nunit测试重新排序?

  •  0
  • mark  · 技术社区  · 5 年前

    为了直接与特定的Web服务器通信,我们有很多测试需要绕过负载均衡器。

    每个测试都用 TestCaseSource 属性,指定在运行时确定要命中的Web服务器列表的函数。

    因此,如果我们有n个测试T1、T2、…、TN和M Web服务器w1、w2、…、wm(在运行时发现),那么这些测试将按以下顺序运行:

    T1W1
    T1W2
    ...
    T1Wm
    T2W1
    T2W2
    ...
    T2Wm
    ...
    TnW1
    TnW2
    ...
    TnWm
    

    现在,我需要它们以不同的顺序运行,即:

    T1W1
    T2W1
    ...
    TnW1
    T1W2
    T2W2
    ...
    TnW2
    ...
    T1Wm
    T2Wm
    ...
    TnWm
    

    我了解可以使用testcasedata.test name属性修改测试名称。但是这样做仍然会一起运行子测试用例。例如,请参见以下内容:

    enter image description here

    测试 nan4dfc1app01_RegisterAndStartShiftAndEnsureInvalidBadge nan4dfc1app02_RegisterAndStartShiftAndEnsureInvalidBadge 一个接一个运行,而不是:

    • nan4dfc1app01_寄存器和开始移位和取消确认 以所有其他测试开始运行 nan4dfc1app01_
    • nan4dfc1app02_寄存器和启动移位并确保有效 以所有其他测试开始运行 nan4dfc1app02_

    因此,从本质上讲,重命名测试用例并不会拆分子测试用例。对我不好。

    那么,是否有一种方法可以在运行时按照我需要的方式更改订单?

    1 回复  |  直到 5 年前
        1
  •  0
  •   Charlie    5 年前

    不可能用 TestCaseSourceAttribute . 为单个测试方法生成的所有测试用例都一起运行。

    分组测试的另一种机制是通过fixture。如果将类设置为参数化的fixture,并使用testfixtureSourceAttribute将其传递给Web服务器,则可以控制每个fixture中测试的顺序。

    您可以将fixture的传入参数保存为实例成员,并在每个测试中使用它。这可能比您正在做的要简单和容易阅读,因为只有一个对源的引用,而不是多个。