57 lines
2.0 KiB
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.
|