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

如何在GitHub Actions中依次运行两个.NET单元测试项目?

解决GitHub Actions中依次运行多个单元测试项目的问题

你可以通过两种方式修改工作流配置,实现两个测试项目的依次执行:

方法一:拆分独立测试步骤(简单直接)

直接添加两个独立的测试步骤,分别指定每个测试项目的路径,这样第一个项目测试完成且成功后,才会执行第二个项目的测试:

name: Build and Test

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:
    runs-on: [windows-latest]
    env:
      Solution_Name: "Skeleton.sln"
      Test_Project_1: Tests\Test.csproj
      Test_Project_2: UnitTest/UnitTest.csproj
      
    steps:
    - name: Checkout
      uses: actions/checkout@v3
      with:
        fetch-depth: 0

    - name: Install .NET Core
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: 6.0.x

    - name: Setup MSBuild
      uses: microsoft/setup-msbuild@v1.0.2
    
    - name: Restore dependencies
      run: nuget restore "Skeleton.sln"

    - name: Build Solution
      run: msbuild "Skeleton.sln"
      
    - name: Execute first unit test project
      run: dotnet test ${{ env.Test_Project_1 }}
      
    - name: Execute second unit test project
      run: dotnet test ${{ env.Test_Project_2 }}

方法二:用循环批量执行(扩展性强)

如果以后可能添加更多测试项目,可以将所有测试项目路径存入环境变量,通过PowerShell循环依次执行:

name: Build and Test

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:
    runs-on: [windows-latest]
    env:
      Solution_Name: "Skeleton.sln"
      # 用空格分隔多个测试项目路径,Windows下支持\或/作为路径分隔符
      Test_Projects: "Tests\\Test.csproj UnitTest/UnitTest.csproj"
      
    steps:
    - name: Checkout
      uses: actions/checkout@v3
      with:
        fetch-depth: 0

    - name: Install .NET Core
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: 6.0.x

    - name: Setup MSBuild
      uses: microsoft/setup-msbuild@v1.0.2
    
    - name: Restore dependencies
      run: nuget restore "Skeleton.sln"

    - name: Build Solution
      run: msbuild "Skeleton.sln"
      
    - name: Execute all unit test projects in order
      run: |
        foreach ($testProject in $env:Test_Projects -split ' ') {
          dotnet test $testProject
        }
      shell: pwsh

说明

  • 两种方法都会严格按照顺序执行测试项目,前一个项目测试失败的话,后续步骤会终止(符合GitHub Actions默认的失败终止逻辑)。
  • 你原来的dotnet test未执行两个项目,大概率是因为自动识别测试项目时出现了路径或项目类型的问题,指定具体项目路径可以避免这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:35:30