2020-10-20 17:11:23 +02:00
|
|
|
## FSFW Testing
|
|
|
|
This repository contains testing and unit testing components.
|
|
|
|
|
|
|
|
[Catch2](https://github.com/catchorg/Catch2) has been used as a framework,
|
|
|
|
and these unit tests can only be run on a linux host machine.
|
|
|
|
The makefile with default settings creates the unit test binary which can be
|
|
|
|
run in the terminal or in eclipse.
|
|
|
|
|
|
|
|
### Instructions
|
2020-10-30 14:42:42 +01:00
|
|
|
|
|
|
|
To run the fsfw unittests in the project, perform following steps:
|
|
|
|
|
|
|
|
1. Copy the testcfg folder the project root (folder containing the FSFW).
|
|
|
|
2. There is a makefile inside the testcfg folder which can be used to have
|
|
|
|
a starting point to compile the unit tests. Copy that Makefile to the project
|
|
|
|
root
|
|
|
|
3. Create a folder named catch2 (can have other name which requires Makefile
|
|
|
|
adaption) and copy the Catch2 header files there (NOTE: CMake support
|
|
|
|
not enabled yet!)
|
2020-10-20 17:11:23 +02:00
|
|
|
|
|
|
|
### Eclipse CDT settings
|
|
|
|
|
|
|
|
The default eclipse terminal has issues displaying the colors used
|
|
|
|
when running the unit test binary by catch2. To fix this issue,
|
|
|
|
install the ANSI Escape In Console package from the eclipse marketplace.
|
|
|
|
|
|
|
|
### GCOV integration
|
|
|
|
|
|
|
|
GCOV has been integrated as a code coverage tool.
|
|
|
|
It can be enabled by adding `GCOV=1` to the build process as an additional argument.
|
|
|
|
Coverage data will be provided in form of .gcno and .gcda files.
|
|
|
|
These can be displayed in eclipse by looking
|
|
|
|
for a .gcno or .gcda file in the \_obj folder, double-clicking it
|
|
|
|
and picking the right source-binary. This will generate
|
|
|
|
information about which lines of a file have run, provided it is open in
|
|
|
|
eclipse.
|
|
|
|
|
|
|
|
### LCOV integration
|
|
|
|
|
|
|
|
The files generated by GCOV can also be processed by the tool LCOV.
|
|
|
|
On ubuntu, the tool can be installed with the following command:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
sudo apt-get install lcov
|
|
|
|
````
|
|
|
|
|
|
|
|
After that, the tool can be run by building the unit tests with `GCOV=1`,
|
|
|
|
running them at least one time and then executing the `lcov.sh` script.
|
|
|
|
|
|
|
|
### Adding unit tests
|
|
|
|
|
|
|
|
The catch unit tests are located in unittest/testfw. To add new unit tests,
|
|
|
|
add them to the UnitTestCatch.cpp file or add a new source file which
|
|
|
|
includes catch.hpp.
|
|
|
|
|
|
|
|
For writing basics tests, the [assertion documentation](https://github.com/catchorg/Catch2/blob/master/docs/assertions.md#top)
|
|
|
|
or the existing examples are a good guideliens.
|
|
|
|
For more advanced tests, refer to the [catch2 documentation](https://github.com/catchorg/Catch2/blob/master/docs/Readme.md#top).
|
|
|
|
|