我的印象是单元测试类中的测试方法将按照它们在类文件中出现的顺序执行。显然这不是真的。它似乎也不完全基于字母顺序。MSTEST 如何决定执行顺序?
编辑:经过一番挖掘,我能够找到答案。见下文。
我的印象是单元测试类中的测试方法将按照它们在类文件中出现的顺序执行。显然这不是真的。它似乎也不完全基于字母顺序。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 实例并重新打开它。
当 Visual Studio 打开时,您应该打开测试列表编辑器,然后在测试列表部分下创建您自己的列表。创建新的测试列表后,它应该是空的。
转到所有加载的测试部分,然后使用您选择的顺序将任何测试拖到新创建的测试部分。
然后确保检查了您最后创建的测试部分,您可以按运行测试并按您定义的顺序运行它。
我不知道这可能会出错或类似的东西,但它神奇地工作。我们和我的同事对这种方法进行了几次测试。
好锁
问题:我想要做的是只运行包含在我的有序测试中的网络测试。我为此目的使用了一个有序的测试,所以我可以按照我需要它们运行的特定顺序运行我的 web 测试。我有很多 web 测试,但是我的有序测试包含这些 web 测试的一个子集,我想运行。解决方案:有序测试用于按一定顺序运行一组测试。在 Visual Studio/test 项目中创建 Orderer 测试列表。从测试视图窗口(测试 | Windows | 测试视图)中,选择 OrderedTest 并从那里运行它(您可以右键单击它并选择“运行选择”)。orderedtest 将自动运行包含在其中的所有 webtests。
您将在测试结果窗口 (Test | Windows | Test Results) 中查看结果;双击 OrderedTest,您将在那里看到每个 Web 测试的详细结果。您可以双击每个 webtest,您将能够看到每个 webtest 的详细结果。
有很多方法可以在 VS 中对测试进行排序。使用测试视图和添加额外的列和顺序。我使用 VSMDI 文件,它会按照其中指定的顺序运行它们。
它们运行的顺序无关紧要......如果您的测试依赖于首先运行的另一个测试,那么您的测试就有缺陷:-)