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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:32:23