| name | mtp-test-running |
| description | Run MaterialDesignInXamlToolkit tests correctly with dotnet test, TUnit, and Microsoft Testing Platform. Use when validating changes, choosing a safe test scope, or filtering to the exact affected tests. |
Test running with MTP
Use this skill when you need to run or suggest test commands in this repository.
Repository-specific runner setup
- Test projects use
UseMicrosoftTestingPlatformRunner=true.
- Test projects also set
TestingPlatformDotnetTestSupport=true.
global.json does not opt into test.runner = Microsoft.Testing.Platform.
- That means this repo currently uses
dotnet test in the legacy CLI mode while delegating execution to MTP-backed test applications.
- Runner-specific arguments must therefore be passed after an extra
--.
- Do not rely on top-level
dotnet test --filter ... for these projects.
Strong preferences
- Start with the smallest non-UI test scope that covers the change.
- Avoid
MaterialDesignThemes.UITests unless the change is inherently runtime WPF behavior.
- Only run UI tests after the user explicitly asks or grants permission.
- When UI tests are necessary, run only the affected tests, never the whole UI suite.
TUnit filter syntax
TUnit uses --treenode-filter.
Format:
/<Assembly>/<Namespace>/<Class>/<Test>
- Use
* as a wildcard within a segment.
- Use
(A)|(B) inside a segment for OR.
- Prefer exact class and test names over namespace-wide filters.
- Add
--minimum-expected-tests <n> so an empty selection fails loudly.
Command patterns
Example targeted non-UI test run
dotnet test tests\MaterialDesignThemes.Wpf.Tests\MaterialDesignThemes.Wpf.Tests.csproj -c Release --no-build -- --treenode-filter "/*/*/AutomationPropertiesNameConverterTests/*" --minimum-expected-tests 1 --no-ansi --no-progress
Example targeted UI validation
dotnet test tests\MaterialDesignThemes.UITests\MaterialDesignThemes.UITests.csproj -c Release --no-build -- --treenode-filter "/*/*/DecimalUpDownTests/(NumericButtons_WithMaximum_DisablesPlusButton)|(NumericButtons_WithMinimum_DisablesMinusButton)" --minimum-expected-tests 2 --no-ansi --no-progress
Verify a UI filter before running
tests\MaterialDesignThemes.UITests\bin\Release\net10.0-windows\MaterialDesignThemes.UITests.exe --list-tests --no-ansi --treenode-filter "/*/*/DecimalUpDownTests/(NumericButtons_WithMaximum_DisablesPlusButton)|(NumericButtons_WithMinimum_DisablesMinusButton)"
Mistakes to avoid
- Using top-level
dotnet test --filter ... for these MTP-backed projects.
- Passing runner-specific flags before the extra
--.
- Running broad UI suites when one or two targeted tests are enough.
- Forgetting
--minimum-expected-tests, which can hide a bad filter.
Useful references