dotnet test命令中Exclude参数无法排除Domain项目的问题
问题描述
我的项目结构如下:
-my-application.sln --src ----Api ----ApplicationServices ----Domain ----Infrastructure --tests ----ApplicationServices.UnitTests ----Domain.UnitTests ----Infrastructure.UnitTests
对应的程序集名称为:
- MyApp.CarModule.Api
- MyApp.CarModule.ApplicationServices
- MyApp.CarModule.Domain
- MyApp.CarModule.Infrastructure
我尝试用dotnet test结合coverlet收集代码覆盖率,想要排除Domain项目,但试了多种Exclude参数写法,结果里还是包含Domain项目,只有全排除命令有效,说明程序集名称的参数写法有问题,请问该如何正确传递?
正确的Exclude参数写法
coverlet的Exclude参数需要精准匹配程序集的完整名称,注意区分大小写,同时要使用正确的格式。以下是几种可行的写法:
1. 精准匹配Domain程序集
直接指定完整程序集名称,用[程序集名]*的格式匹配该程序集下所有内容,命令行中需用双引号包裹参数:
dotnet test /p:CollectCoverage=true /p:Exclude="[MyApp.CarModule.Domain]*"
2. 同时排除Domain程序集及对应测试项目
如果需要一并排除Domain的单元测试项目,可补充对应的程序集匹配:
dotnet test /p:CollectCoverage=true /p:Exclude="[MyApp.CarModule.Domain]*,[MyApp.CarModule.Domain.UnitTests]*"
3. 按命名空间前缀排除
也可以通过命名空间前缀匹配排除,写法如下:
dotnet test /p:CollectCoverage=true /p:Exclude="MyApp.CarModule.Domain*"
关键注意事项
- 程序集名称必须完全匹配,包括大小写,否则不会生效
- 命令行中务必用双引号包裹
Exclude参数,避免空格或特殊字符导致解析错误 - Windows环境下,若使用cmd窗口,双引号需转义为
"";PowerShell则直接使用双引号即可
内容的提问来源于stack exchange,提问作者ruddnisrus
相关产品推荐
相关产品推荐

