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

如何在C#和xUnit中一次性运行多个单元测试项目

可行解决方案汇总

1. 修正dotnet test多项目运行命令

你之前的命令格式错误,重复写了test参数导致报错。正确的多项目运行语法是直接在dotnet test后依次列出所有项目路径,不需要重复test关键字:

dotnet test path/to/subproject1.csproj path/to/subproject2.csproj

2. 用通配符批量匹配测试项目

如果测试项目都遵循统一命名规则(比如以.Tests.csproj结尾),可以用通配符一次性匹配所有测试项目,避免逐个输入路径:

# 匹配当前目录及子目录下所有以.Tests.csproj结尾的项目
dotnet test **/*.Tests.csproj

Windows PowerShell环境下可调整为:

Get-ChildItem -Recurse -Filter *.Tests.csproj | ForEach-Object { dotnet test $_.FullName }

3. 用解决方案文件统一管理测试项目

创建一个.sln解决方案文件,将所有拆分后的测试项目添加进去:

# 在根目录创建解决方案
dotnet new sln -n AllTests
# 添加所有测试项目到解决方案
dotnet sln add path/to/subproject1.csproj path/to/subproject2.csproj ...

CI环境中只需运行以下命令即可执行所有测试:

dotnet test AllTests.sln

本地开发时,直接针对单个项目运行dotnet test path/to/target-project.csproj即可,互不影响。

4. 修复父项目引用子测试项目不执行的问题

如果用父项目引用子测试项目,需在父项目的.csproj文件中添加配置,让MSBuild识别并执行子项目的测试:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <!-- 标记为测试项目集合 -->
    <IsTestProject>true</IsTestProject>
  </PropertyGroup>

  <ItemGroup>
    <!-- 引用所有子测试项目 -->
    <ProjectReference Include="path/to/subproject1.csproj" />
    <ProjectReference Include="path/to/subproject2.csproj" />
  </ItemGroup>
</Project>

之后运行dotnet test parent-project.csproj,就会自动执行所有引用的子测试项目。

5. 编写批量运行脚本(适合复杂场景)

如果项目结构复杂,可编写简单脚本遍历所有测试项目:

Bash脚本(Linux/macOS/Windows WSL)

#!/bin/bash
# 遍历所有.Tests.csproj文件并运行测试
find . -name "*.Tests.csproj" -type f | while read -r proj; do
    echo "Running tests for $proj..."
    dotnet test "$proj"
done

PowerShell脚本(Windows)

# 遍历所有.Tests.csproj文件并运行测试
Get-ChildItem -Recurse -Filter *.Tests.csproj | ForEach-Object {
    Write-Host "Running tests for $($_.FullName)..."
    dotnet test $_.FullName
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:08:09