Skip to content

Testing

Charlie Kindel edited this page Jun 8, 2020 · 8 revisions

Automated Unit Tests

Terminal.Gui uses xunit for automated unit tests run automatically with Github Actions.

Notes

  • Running tests in parallel is disabled because Application is a singleton. Do not change those settings.

Guidelines for Adding More Tests

  1. Do. Please. Add lots.
  2. Structure the tests by class. Name the test classes in the form of ClassNameTests and the file ClassNameTests.cs.
  3. The test functions themselves should have descriptive names like TestBeginEnd.
  4. IMPORTANT: Remember Application is a static class (singleton). You must clean up after your tests by calling Application.Shutdown.

See the README.md in UnitTests/ for details on how xunit is configured.

Standard Regression Tests required before submitting a Pull Request

  • 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 and shift-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.

Clone this wiki locally