【问题标题】:MSTest: execution order of tests within the same TestClassMSTest:同一个TestClass中测试的执行顺序
【发布时间】:2011-06-11 07:42:23
【问题描述】:

在使用 MSTest 执行测试时,我需要强制执行 TestClass 顺序。

TestClasses 的顺序和每个类中的测试可以是随机的,但 MSTest 不应该从另一个 TestClass 中选择测试,直到它执行完 ClassInitialize、类中的所有测试和 ClassCleanup

我有全局 AssemblyInitializeAssemblyCleanup,因此以下内容不起作用,因为它为每个测试初始化​​程序集:


MSTest.exe /testcontainer:MyUnitTests.dll /resultsfile:report.trx /test:TestClass1 /test:TestClass2

【问题讨论】:

    标签: visual-studio-2010 mstest


    【解决方案1】:

    我问了一个类似的问题here,尽管它与测试类执行顺序无关。如果订购的原因是为了可以设置/维护某种状态,订购测试可能会导致它们变得脆弱。如果您的测试是这种情况,我建议改为以与顺序无关的方式编写它们。

    关于您的汇编级代码问题,AssemblyInitializeAssemblyCleanup 的解决方法如下:

    private int InitCount;
    
    [AssemblyInitialize]
    public static void Setup(TestContext context)
    {
         if (InitCount++ == 0) {
             //Do Something
         }
    }
    
    [AssemblyCleanup]
    public static void Teardown()
    {
          if (--InitCount == 0) {
              //Do something
          }
    }
    

    基本上,您可以强制程序集级方法只触发一次。

    【讨论】:

    • 感谢您的回复。这不起作用有两个不同的原因:1.每次加载程序集时,它都会获得自己的 InitCount 并在每次/执行代码时对其进行初始化 2.AssemblyCleanup 应在执行 LAST 测试后执行一次
    猜你喜欢
    • 2010-10-08
    • 2011-02-09
    • 1970-01-01
    • 2010-09-22
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多