【问题标题】:How Does MSTEST/Visual Studio 2008 Team Test Decide Test Method Execution Order?MSTEST/Visual Studio 2008 Team Test 如何决定测试方法的执行顺序?
【发布时间】:2010-09-22 06:35:13
【问题描述】:

我的印象是单元测试类中的测试方法would be executed in the order that they appear in the class file. 显然这不是真的。它似乎也不完全基于字母顺序。 MSTEST 如何决定执行顺序?

编辑:经过一番挖掘,我能够找到答案。见下文。

【问题讨论】:

标签: visual-studio-2008 mstest


【解决方案1】:

我能够找到答案。

According to Microsoft employee Guillermo Serrato:

MSTest 执行所有测试 同步地,顺序是 不确定的

【讨论】:

    【解决方案2】:

    在测试视图或测试列表编辑器中排序会使它们看起来像是您可以控制的——这只是实现的副产品。我们没有尝试以特定顺序实际执行它们(我们在“允许顺序”和“随机顺序”上来回切换)。

    如果您真的需要顺序,那么这就是顺序测试的用途。这些在单元测试可用的所有版本中都可用——使用测试/新建测试菜单,或右键单击测试项目并创建“有序测试”

    【讨论】:

      【解决方案3】:

      这很简单。我正在使用这个

      C:>mstest /testcontainer:C:\MyTest.dll /resultsfile:C:\MyTestresults.xml

      这里的逻辑是,默认情况下 mstest 会为您提供一个 .trx 文件。因此,在针对 [/resultfile:] 选项的命令中,通过提供 .xml 扩展名来写入文件名。所以我使用 /resultsfile:C:\MyTestresults.xml 而不是 /resultsfile:C:\MyTestresults.trx

      这对我来说很好。请让我知道这对你有没有用。

      【讨论】:

        【解决方案4】:

        根据我的经验(我有点难) 关于MStest项目中方法执行顺序的变更顺序,我尝试了很多思考。我将尝试描述这些步骤。

        1. 您应该确保删除默认的 .testrunco​​nfig 和 .vsmdi 文件。 Visual Studio 在创建测试项目时创建的这些文件。

        2. 关闭 Visual Studio 实例并重新打开它。

        3. 打开 Visual Studio 后,您应该打开测试列表编辑器,然后在测试列表部分下创建您自己的列表。创建新的测试列表后,它应该是空的。

        4. 转到所有已加载的测试部分,然后按照您选择的顺序将任何测试拖到新创建的测试部分。

        然后确保检查了您最后创建的测试部分,然后您可以按运行测试并按您定义的顺序运行它。

        我不知道这可能是错误或类似的东西,但它神奇地工作。 我们和我的同事对这种方法进行了几次测试。

        好锁

        【讨论】:

          【解决方案5】:

          问题:我想要做的是只运行包含在我的有序测试中的网络测试。我为此目的使用了一个有序的测试,所以我可以按照我需要它们运行的​​特定顺序运行我的 web 测试。我有很多 web 测试,但是我的有序测试包含这些 web 测试的一个子集,我想运行。 解决方案: 有序测试用于按特定顺序运行一组测试。 在 Visual Studio/test 项目中创建 Orderer 测试列表。 从测试视图窗口(测试 | Windows | 测试视图)中,选择 OrderedTest 并从那里运行它(您可以右键单击它并选择“运行选择”)。 orderedtest 将自动运行您包含在其中的所有 webtest。

          您将在测试结果窗口(Test | Windows | Test Results)中看到结果;双击 OrderedTest,您将在那里看到每个 Web 测试的详细结果。您可以双击每个 webtest,您将能够看到每个测试的详细结果。

          【讨论】:

            【解决方案6】:

            有很多方法可以在 VS 中对测试进行排序。使用测试视图和添加额外的列和顺序。我使用 VSMDI 文件,它会按照其中指定的顺序运行它们。

            【讨论】:

              【解决方案7】:

              它们以什么顺序运行无关紧要...如果您的测试依赖于首先运行的另一个测试,那么您的测试就有缺陷:-)

              【讨论】:

              • 同意 - 但是当您尝试跟踪哪个测试没有自行清理(在数据驱动的测试中)时的场景呢 - 在这种情况下知道执行顺序会有所帮助
              • 我知道这并不总是可行的,我有一些以这种方式驱动数据的测试工具。但是你应该不惜一切代价避免这样的数据驱动测试。单元测试应该只测试单元。数据驱动测试应该是集成测试,并使用其他工具(即不是 mstest 或 nunit)运行,您可以根据您描述的原因控制执行顺序:-)
              • 同意,这是为了对 CRM 进行测试,可能很难针对每次测试的“新”数据集运行测试。但是,如果我有 100 个有序测试并且测试 #93 有问题怎么办?!
              • 你总是可以只写你自己的测试框架,按照你的需要运行:PI写了我自己的单元测试框架,可以部署在目标环境中运行(即我最初写它是为了测试XNA Xbox 上的游戏),以便我可以集成测试需要图形设备的东西:github.com/joelmartinez/scurvy.test
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-01-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-31
              相关资源
              最近更新 更多