如何使用vstest命令行工具按特定顺序运行MSTest测试用例
如何让vstest.console.exe按指定顺序运行MSTest测试
肯定可以实现指定顺序运行测试,给你两种实用的方法:
方法一:命令行分批次指定顺序
如果只是少数测试需要固定顺序,直接分三次执行命令就行:先跑TestA,再跑Category1里除了TestA和TestY的其他测试,最后跑TestY。
命令示例:
# 先执行TestA start vstest.console.exe MyProject1.UI.MSTest.dll /testcasefilter:"(TestCategory=Category1) and (FullyQualifiedName~MyNamespace.TestClass.TestA)" # 执行Category1中除TestA、TestY外的其他测试 start vstest.console.exe MyProject1.UI.MSTest.dll /testcasefilter:"(TestCategory=Category1) and not (FullyQualifiedName~TestA or FullyQualifiedName~TestY)" # 最后执行TestY start vstest.console.exe MyProject1.UI.MSTest.dll /testcasefilter:"(TestCategory=Category1) and (FullyQualifiedName~MyNamespace.TestClass.TestY)"
这里的FullyQualifiedName要写测试的完整路径(命名空间+类名+方法名),用~是模糊匹配,只要包含关键词就能命中,怕写错的话直接复制测试的完整名称更稳妥。
方法二:用MSTest的优先级特性
MSTest自带[Priority]特性,能指定测试的执行顺序,数值越小越先执行。
- 给测试加优先级标记:
[TestMethod, TestCategory("Category1"), Priority(1)] public void TestA() { // 测试代码 } [TestMethod, TestCategory("Category1"), Priority(3)] public void TestY() { // 测试代码 } // 其他同类别测试设为中间优先级,比如2 [TestMethod, TestCategory("Category1"), Priority(2)] public void TestB() { // 测试代码 }
- 创建一个
RunSettings.xml配置文件,告诉vstest按优先级排序:
<?xml version="1.0" encoding="utf-8"?> <RunSettings> <MSTest> <TestRunOrder>Priority</TestRunOrder> </MSTest> </RunSettings>
- 用配置文件运行测试:
start vstest.console.exe MyProject1.UI.MSTest.dll /testcasefilter:TestCategory=Category1 /runsettings:RunSettings.xml
这样TestA会最先执行,TestY最后执行,中间的测试按优先级2的顺序跑。如果多个测试优先级相同,它们的执行顺序还是随机的,所以关键测试最好设唯一的优先级数值。
内容的提问来源于stack exchange,提问作者StackTrace
相关产品推荐
相关产品推荐

