Skip to main content

run-integration-tests

Build, pack, and run .NET MAUI integration tests locally. Validates templates, samples, and end-to-end scenarios using the local workload.

소스 정보

저장소
dotnet/maui
최근 소스 활동
2026년 1월 30일 14:58
감지된 SKILL.md 언어
영어
스타
23,320
포크
1,984

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
2 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
run-integration-tests
description
Build, pack, and run .NET MAUI integration tests locally. Validates templates, samples, and end-to-end scenarios using the local workload.
metadata
{"author":"dotnet-maui","version":"1.0"}
compatibility
Requires Windows for WindowsTemplates category. macOS for macOSTemplates, RunOniOS, RunOnAndroid.
# Run Integration Tests Skill Build the MAUI product, install local workloads, and run integration tests. ## When to Use - User asks to "run integration tests" - User asks to "test templates locally" - User asks to "validate MAUI build with templates" - User wants to verify changes don't break template scenarios - User asks to run specific test categories (WindowsTemplates, Samples, Build, Blazor, etc.) ## Available Test Categories | Category | Platform | Description | |----------|----------|-------------| | `Build` | All | Basic template build tests | | `WindowsTemplates` | Windows | Windows-specific template scenarios | | `macOSTemplates` | macOS | macOS-specific scenarios | | `Blazor` | All | Blazor hybrid templates | | `MultiProject` | All | Multi-project templates | | `Samples` | All | Sample project builds | | `AOT` | macOS | Native AOT compilation | | `RunOnAndroid` | macOS | Build, install, run on Android emulator | | `RunOniOS` | macOS | iOS simulator tests | ## Scripts All scripts are in `.github/skills/run-integration-tests/scripts/` ### Run Integration Tests (Full Workflow) ```powershell # Run with specific category pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "WindowsTemplates" # Run with Release configuration pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "Samples" -Configuration "Release" # Run with custom test filter pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -TestFilter "FullyQualifiedName~BuildSample" # Skip build step (if already built) pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "Build" -SkipBuild # macOS: Skip Xcode version check (for version mismatches) pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "macOSTemplates" -SkipBuild -SkipInstall -SkipXcodeVersionCheck # Auto-provision SDK if not found (first-time setup) pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "Build" -AutoProvision ``` ## Parameters | Parameter | Required | Default | Description | |-----------|----------|---------|-------------| | `-Category` | No | - | Test category to run (WindowsTemplates, Samples, Build, etc.) | | `-TestFilter` | No | - | Custom NUnit test filter expression | | `-Configuration` | No | Debug | Build configuration (Debug/Release) | | `-SkipBuild` | No | false | Skip build/pack step if already done | | `-SkipInstall` | No | false | Skip workload installation if already done | | `-SkipXcodeVersionCheck` | No | false | Skip Xcode version validation (macOS) | | `-AutoProvision` | No | false | Automatically provision local SDK if not found | | `-ResultsDirectory` | No | artifacts/integration-tests | Directory for test results | ## Workflow Steps The script performs these steps: 1. **Build & Pack**: `.\build.cmd -restore -pack -configuration $Configuration` 2. **Install Workloads**: `.dotnet\dotnet build .\src\DotNet\DotNet.csproj -t:Install -c $Configuration` 3. **Extract Version**: Reads MAUI_PACKAGE_VERSION from installed packs 4. **Run Tests**: `.dotnet\dotnet test ... -filter "Category=$Category"` ## Example Usage ```powershell # Run WindowsTemplates tests pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "WindowsTemplates" # Run Samples tests pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "Samples" # Run multiple categories pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -TestFilter "Category=Build|Category=Blazor" ``` ## Prerequisites - Windows for WindowsTemplates, macOS for macOSTemplates/RunOniOS/RunOnAndroid - .NET SDK (version from global.json) - Sufficient disk space for build artifacts - Local SDK and workloads must be provisioned first ### Provisioning the Local SDK (Required First Time) Before running integration tests, you must provision the local .NET SDK and MAUI workloads: ```bash # Step 1: Restore dotnet tools dotnet tool restore # Step 2: Provision local SDK and install workloads (~5 minutes) dotnet cake --target=dotnet # Step 3: Install MAUI local workloads dotnet cake --target=dotnet-local-workloads ``` **Verification:** ```bash # Check SDK exists ls .dotnet/dotnet # Check MAUI SDK version ls .dotnet/packs/Microsoft.Maui.Sdk ``` > **Note:** The old `./build.sh --target=dotnet` syntax no longer works. Use `dotnet cake` directly. ## Output - Test results in TRX format at `<ResultsDirectory>/` - Build logs in `artifacts/` directory - Console output with test pass/fail summary ## Troubleshooting | Issue | Solution | |-------|----------| | "MAUI_PACKAGE_VERSION was not set" | Ensure build step completed successfully | | "Local .dotnet SDK not found" | Run `dotnet tool restore && dotnet cake --target=dotnet && dotnet cake --target=dotnet-local-workloads` | | Template not found | Workload installation may have failed | | Build failures | Check `artifacts/log/` for detailed build logs | | "Cannot proceed with locked .dotnet folder" | Kill processes using `.dotnet`: `Get-Process \| Where-Object { $_.Path -like "*\.dotnet\*" } \| ForEach-Object { Stop-Process -Id $_.Id -Force }` | | Session times out / becomes invalid | Integration tests are long-running (15-60+ min). Run manually in a terminal window instead of via Copilot CLI | | Tests take too long | Start with `Build` category (fastest), then run others. Use `-SkipBuild -SkipInstall` if workloads are already installed | | iOS tests fail with "mlaunch exited with 1" | Simulator state issue. Run individual tests instead of the whole category (see below) | | iOS simulator state errors (code 137/149) | Reset simulator: `xcrun simctl shutdown all && xcrun simctl erase all` or run tests individually | ## Running Manually (Recommended for Long-Running Tests) Integration tests can take 15-60+ minutes depending on the category. For best results, run directly in a terminal: ```powershell cd D:\repos\dotnet\maui # Option 1: Use the skill script pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category "Build" -SkipBuild -SkipInstall # Option 2: Run dotnet test directly (if workloads already installed) $env:MAUI_PACKAGE_VERSION = (Get-ChildItem .dotnet\packs\Microsoft.Maui.Sdk -Directory | Sort-Object Name -Descending | Select-Object -First 1).Name .dotnet\dotnet test src\TestUtils\src\Microsoft.Maui.IntegrationTests --filter "Category=Build" ``` ### Running All Categories Sequentially ```powershell # Windows categories (run on Windows) $categories = @("Build", "WindowsTemplates", "Blazor", "MultiProject", "Samples") foreach ($cat in $categories) { Write-Host "Running $cat..." -ForegroundColor Cyan pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -Category $cat -SkipBuild -SkipInstall } ``` ### Running Individual iOS Tests (Recommended) Running all iOS tests together (`-Category "RunOniOS"`) can cause simulator state issues. For better reliability, run tests individually: ```powershell # Available iOS tests $iosTests = @( "RunOniOS_MauiDebug", "RunOniOS_MauiRelease", "RunOniOS_MauiReleaseTrimFull", "RunOniOS_BlazorDebug", "RunOniOS_BlazorRelease", "RunOniOS_MauiNativeAOT" ) # Run a specific iOS test pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -TestFilter "FullyQualifiedName~RunOniOS_MauiDebug" -SkipBuild -SkipInstall -SkipXcodeVersionCheck # Run all iOS tests individually (more reliable than running category) foreach ($test in $iosTests) { Write-Host "Running $test..." -ForegroundColor Cyan pwsh .github/skills/run-integration-tests/scripts/Run-IntegrationTests.ps1 -TestFilter "FullyQualifiedName~$test" -SkipBuild -SkipInstall -SkipXcodeVersionCheck } ```
GitHub에서 보기