如何获取C#测试项目中测试的FullyQualifiedName格式列表?
获取MSTest/Xunit测试的FullyQualifiedName列表方案
针对MSTest项目
方法1:通过详细日志提取
执行以下命令,控制台会输出包含完整测试名称的详细日志:
dotnet test --logger "console;verbosity=detailed"
在输出结果中,每个测试的完整名称会以类似 Test Name: Your.Test.Namespace.TestClass.TestMethod 的格式出现,直接提取即可作为--filter参数的值。
方法2:解析TRX测试报告
- 生成TRX格式的测试报告:
dotnet test --logger trx
- 在项目的
TestResults目录下找到生成的.trx文件,用XML解析工具打开。每个测试对应的<UnitTest>节点中,TestMethod属性的className(命名空间+类名)和name(方法名)拼接起来,就是完整的FullyQualifiedName,格式为{className}.{name}。
针对Xunit项目
方法1:使用Xunit命令行工具
- 全局安装Xunit控制台运行器:
dotnet tool install -g xunit.runner.console
- 执行以下命令列出所有测试的完整名称:
xunit.console <你的测试项目生成的DLL路径> -list
输出结果直接就是每个测试的FullyQualifiedName,可以直接复制用于dotnet test --filter参数。
方法2:通过JSON日志提取
执行命令生成包含详细测试信息的JSON日志:
dotnet test --logger "json;verbosity=detailed"
在输出的JSON内容中,每个测试条目都包含fullyQualifiedName字段,直接提取该字段值即可。
通用代码解析方案(适用于MSTest和Xunit)
如果需要程序化获取,可以用Roslyn分析测试项目的源代码:
- 遍历测试项目的所有C#代码文件。
- 使用Roslyn语法分析器识别带有测试特性的方法:
- MSTest:标记了
[TestClass]的类中的[TestMethod]方法 - Xunit:标记了
[Fact]或[Theory]的方法
- MSTest:标记了
- 拼接方法的命名空间、类名和方法名,得到
FullyQualifiedName。
内容的提问来源于stack exchange,提问作者Marat Tim
相关产品推荐
相关产品推荐

