You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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]特性,能指定测试的执行顺序,数值越小越先执行。

  1. 给测试加优先级标记:
[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()
{
    // 测试代码
}
  1. 创建一个RunSettings.xml配置文件,告诉vstest按优先级排序:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <MSTest>
    <TestRunOrder>Priority</TestRunOrder>
  </MSTest>
</RunSettings>
  1. 用配置文件运行测试:
start vstest.console.exe MyProject1.UI.MSTest.dll /testcasefilter:TestCategory=Category1 /runsettings:RunSettings.xml

这样TestA会最先执行,TestY最后执行,中间的测试按优先级2的顺序跑。如果多个测试优先级相同,它们的执行顺序还是随机的,所以关键测试最好设唯一的优先级数值。


内容的提问来源于stack exchange,提问作者StackTrace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 08:40:15