Kaleidoscope/docs/testing/automated-testing.md

57 lines
2.0 KiB

# Automated Testing
## Testing with gtest/gmock
Before feature requests or bug fixes can be merged into master, the folowing
steps should be taken:
- Create a new test suite named after the issue, e.g. `Issue840`.
- Add a test case named `Reproduces` that reproduces the bug. It should fail if
the bug is present and pass if the bug is fixed.
- Merge the proposed fix into a temporary testing branch.
- The reproduction test should fail.
- Add a test called "HasNotRegresed" that detects a potential regression.
It should pass with the fix and fail before the fix.
- Comment out and keep the `Reproduces` test case as documentation.
For an example, see keyboardio:Kaleidoscope/tests/issue_840.
### Adding a New Test Case
For general information on writing test with gtest/gmock see [gtest
docs](https://github.com/google/googletest/tree/master/googletest/docs) and
[gmock docs](https://github.com/google/googletest/tree/master/googlemock/docs).
1. Create a new test file, if appropriate.
1. Choose a new test suite name and create a new test fixture, if appropriate.
1. Write your test case.
The final include in any test file should be `#include
"testing/setup-googletest.h"` which should be followed by the macro
invocation `SETUP_GOOGLETEST()`. This will take care of including headers
commonly used in tests in addtion to gtest and gmock headers.
Any test fixtures should inherit from `VirtualDeviceTest` which wraps the test
sim APIs and provides common setup and teardown functionality. The appropriate
header is already imported by `setup-googletest.h`
### Test Infrastructure
If you need to modify or extend test infrastructure to support your use case,
it can currently be found under `keyboardio:Kaleidoscope/testing`.
### Style
TODO(obra): Fill out this section to your liking.
You can see samples of the desired test style in the [example tests](#examples).
### Examples
All existing tests are examples and may be found under
`keyboardio:Kaleidoscope/tests`.
## Testing with Aglais/Papilio
TODO(obra): Write (or delegate the writing of) this section.