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.jsondoes not opt intotest.runner = Microsoft.Testing.Platform.- That means this repo currently uses
dotnet testin 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.UITestsunless 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
global.jsontests/MaterialDesignThemes.Wpf.Tests/MaterialDesignThemes.Wpf.Tests.csprojtests/MaterialDesignThemes.UITests/MaterialDesignThemes.UITests.csproj- https://learn.microsoft.com/dotnet/core/testing/unit-testing-with-dotnet-test
- https://tunit.dev/docs/execution/test-filters