编辑: 注意,问题288805是类似的,但是,我特别询问MSTest如何选择默认测试顺序.请看这个问题的其余部分.谢谢Eilon 的链接.
我正在寻找遗留的MSTest项目.测试始终以相同的顺序运行.订单不是字母顺序,而是在两个*.cs TestMethod文件中的方法之间反弹.
我没有改变遗留代码的物理顺序.为方便起见,我为第一个测试的方法名称添加了"MSTest01",将第二个测试的方法名称"MSTest02"添加到了等等.
令我惊讶的是,TestMethod函数的执行顺序发生了变化; #3第一,#6第二,#5第三,等等.
当我从TestMethod函数名中删除"MSTestnn"字符串时,它们的执行顺序变回了先前的顺序,即第一个.cs文件中的一个测试,第二个.cs文件中的两个测试,第一个中的五个测试. cs文件,等等.
似乎文件位置可能不是一个因素,而TestMethod函数名称可能是一个因素.
问题:任何人都可以解释MSTest如何决定TestMethod函数的执行顺序?
我相信MSTest执行测试方法,通过它们的'ID'来命令它们(似乎是它们的完整命名空间).
我创建了一个包含4个未测试的TestProject1(UnitTest1,... 2,... A,... B).每个单元测试包含5种测试方法(TestMethodA,... B,... 1,... 2,... 3).它们在测试类中以随机顺序声明.现在,每次运行MSTest时,测试都以相同的顺序执行:
TestProject1.UnitTest1.TestMethod1
TestProject1.UnitTest1.TestMethod2
TestProject1.UnitTest1.TestMethod3
TestProject1.UnitTest1.TestMethodA
TestProject1.UnitTest1.TestMethodB
TestProject1.UnitTest2.TestMethod1
TestProject1.UnitTest2.TestMethod2
TestProject1.UnitTest2.TestMethod3
TestProject1.UnitTest2.TestMethodA
TestProject1.UnitTest2.TestMethodB
TestProject1.UnitTestA.TestMethod1
TestProject1.UnitTestA.TestMethod2
TestProject1.UnitTestA.TestMethod3
TestProject1.UnitTestA.TestMethodA
TestProject1.UnitTestA.TestMethodB
TestProject1.UnitTestB.TestMethod1
TestProject1.UnitTestB.TestMethod2
TestProject1.UnitTestB.TestMethod3
TestProject1.UnitTestB.TestMethodA
TestProject1.UnitTestB.TestMethodB
Run Code Online (Sandbox Code Playgroud)
更改该顺序的唯一方法是重命名一个TestClass或TestMethod.例如,如果我将UnitTest1的TestMethodB重命名为TestMethod4,它将在TestMethodA之前执行.
要查看测试方法的ID,请从VS打开"测试视图"窗口,然后右键单击列标题(例如测试名称) - >"添加/删除列..."并添加"ID"列.
归档时间: |
|
查看次数: |
22769 次 |
最近记录: |