-
Notifications
You must be signed in to change notification settings - Fork 695
Testing
Terminal.Gui
uses the following technologies for unit tests and for tracking code coverage.
- xUnit for unit tests
- Fine Code Coverage within VS to visualize code coverage
- simon-k/dotnet-code-coverage-badge@v1.0.0 for generating code coverage badge
If you are new to automated unit tests, here are some good, easy to read resources:
Terminal.Gui
uses xunit for automated unit tests run automatically with Github Actions.
Current code coverage (for the most recently release nuget package):
- Running tests in parallel is disabled because
Application
is a singleton. Do not change those settings.
- Do. Please. Add lots.
- Read and follow this: MIcrosoft's .NET Unit Testing Best Practices
- IMPORTANT: Remember
Application
is a static class (singleton). You must clean up after your tests by callingApplication.Shutdown
.
See the README.md in UnitTests/
for details on how xunit is configured.
-
Every PR should include at least one update or addition to the existing Unit Tests. If you fixed a bug, figure out how to write a test that ensures it never regresses.
-
UICatalog is a great sample app for manual testing. When adding new functionality, fixing bugs, or changing things, please either add a new
Scenario
to UICatalog or update an existingScenario
to fully illustrate your work and provide a test-case. -
Ensure a UI Catalog Scenario has been developed that specifically exercises the code involved in the PR. This Scenario should explicitly and intentionally exercise the following common functional areas:
-
Absolute Positioning using constructors that take absolute coordinates (
Rect
,x
,y
, etc...). -
Computed Positioning using constructors that do not take coordinates. Test various forms of computed positioning (e.g.
Pos.Percent
,Pos.Y(view)
, etc...) and sizing (e.g.Dim.Fill
, ...). -
Use the
All Views
Scenario to test Computed Positioning
-
-
Test on both Windows and Linux.
-
Run through every Scenario in
UI Catalog
and look for regressions or broken behavior.- Resize terminal window to check for layout and clipping bugs.
- Drag
Windows
with the mouse looking for layout or clipping bugs. - Use
tab
andshift-tab
to ensure tab behavior has not broken.
-
Run
demo.c
and ensure it has not broken (however, recognizing it's not a great sample any more).
Please edit this wiki with other regression tests you think of.