Visual studio 2008 MSTEST/VisualStudio2008团队测试如何决定测试方法的执行顺序?

Visual studio 2008 MSTEST/VisualStudio2008团队测试如何决定测试方法的执行顺序?,visual-studio-2008,mstest,Visual Studio 2008,Mstest,我的印象是,单元测试类中的测试方法显然不是这样。它似乎也不是完全基于字母顺序。MSTEST如何决定执行顺序 编辑:我挖了一点才找到答案。请参见下文。它们的运行顺序应该无关紧要。。。如果您的测试依赖于首先运行的另一个测试,那么您的测试是有缺陷的:-有许多方法可以在VS中对测试进行排序。使用测试视图和添加额外列和顺序。我使用VSMDI文件,并按照其中指定的顺序运行它们。我能够找到答案 : MSTest执行所有测试 同时,顺序是 不确定性 在“测试视图”或“测试列表编辑器”中进行排序会使它们看起来像您

我的印象是,单元测试类中的测试方法显然不是这样。它似乎也不是完全基于字母顺序。MSTEST如何决定执行顺序


编辑:我挖了一点才找到答案。请参见下文。

它们的运行顺序应该无关紧要。。。如果您的测试依赖于首先运行的另一个测试,那么您的测试是有缺陷的:-

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

我能够找到答案

:

MSTest执行所有测试 同时,顺序是 不确定性


在“测试视图”或“测试列表编辑器”中进行排序会使它们看起来像您拥有控制权一样—这只是实现的副产品。我们没有尝试按照特定的顺序来执行它们,我们在允许顺序上来回移动,并且是随机顺序


如果您真的需要顺序,这就是顺序测试的目的。在单元测试可用的所有版本中都可以使用这些功能—可以使用“测试/新测试”菜单,也可以右键单击测试项目并创建一个有序的测试,这非常简单。我在用这个

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

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


这对我来说很好。让我知道它是否适合你

根据我的经验,我有点努力 我在MStest项目中对方法执行顺序的变更顺序做了很多思考。我将尝试描述这些步骤

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

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

当VisualStudio打开时,您应该打开测试列表,或者在“测试列表”部分下创建自己的列表。创建新的测试列表后,它应该为空

转到“所有已加载的测试”部分,然后按选择的顺序将任何测试拖到新创建的测试部分上

然后确保您上次创建的测试部分已选中,您可以按运行测试,瞧,它正在按照您定义的顺序运行

我不知道这可能是bug或类似的东西,但它神奇地工作了。 我们和我的同事一起测试了两次这种方法


良好的锁定问题:我想做的是只运行包含在我的有序测试中的web测试。我使用的是一个有序测试,因此我可以按照我需要的特定顺序运行web测试。我有很多web测试,但我的有序测试包含这些web测试的子集,我想运行这些测试。 解决方案: 有序测试用于按特定顺序运行一组测试。 在VisualStudio/test项目中创建订购者测试列表。 从测试视图窗口测试|窗口|测试视图中,选择OrderedTest并运行它。您可以右键单击它并选择运行选择。orderedtest将自动运行其中包含的所有webtests


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

F.Y.I.:xUnit.net以随机顺序运行测试,Ade Miller同意这一点——但是当您试图跟踪数据驱动测试中哪个测试在其自身之后没有清理时,情况会怎样呢——知道执行顺序在这种情况下会有所帮助我知道这并不总是可能的,我有一些以这种方式进行数据驱动的测试工具。但您应该不惜一切代价避免这样的数据驱动测试。单元测试应该只测试单元。数据驱动的测试应该是集成测试,并且可以使用其他工具运行,例如,不是mstest或nunit,您可以控制执行顺序,原因正是您所描述的:-同意,这已经提出了测试CRM,在CRM中,可能很难针对每个测试的“新”数据集运行测试。但是如果我有100个有序的测试,而测试93有问题呢?!您可以随时编写自己的测试框架,根据需要运行:P我编写了自己的单元测试框架,可以部署到目标环境中运行,即。我最初编写该框架是为了在XBox上测试XNA游戏,以便集成测试需要图形设备的东西: