33 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								# C++ tests
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Test framework for C and C++ code in AP.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Adding a Test
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### GoogleTest
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Adding GoogleTests is as simple as creating a directory with
							 | 
						||
| 
								 | 
							
								* one or more `test_*.cpp` files that define tests using
							 | 
						||
| 
								 | 
							
								  [GoogleTest API](https://google.github.io/googletest/)
							 | 
						||
| 
								 | 
							
								* a `CMakeLists.txt` that adds the .cpp files to `test_default` target using
							 | 
						||
| 
								 | 
							
								  [target_sources](https://cmake.org/cmake/help/latest/command/target_sources.html)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### CTest
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If either GoogleTest is not suitable for the test or the build flags / sources / libraries are incompatible,
							 | 
						||
| 
								 | 
							
								you can add another CTest to the project using add_target and add_test, similar to how it's done for `test_default`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Running Tests
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* Install [CMake](https://cmake.org/).
							 | 
						||
| 
								 | 
							
								* Build and/or install GoogleTest and make sure
							 | 
						||
| 
								 | 
							
								  [CMake can find it](https://cmake.org/cmake/help/latest/module/FindGTest.html), or
							 | 
						||
| 
								 | 
							
								  [create a parent `CMakeLists.txt` that fetches GoogleTest](https://google.github.io/googletest/quickstart-cmake.html).
							 | 
						||
| 
								 | 
							
								* Enter the directory with the top-most `CMakeLists.txt` and run
							 | 
						||
| 
								 | 
							
								  ```sh
							 | 
						||
| 
								 | 
							
								  mkdir build
							 | 
						||
| 
								 | 
							
								  cmake -S . -B build/ -DCMAKE_BUILD_TYPE=Release
							 | 
						||
| 
								 | 
							
								  cmake --build build/ --config Release && \
							 | 
						||
| 
								 | 
							
								  ctest --test-dir build/ -C Release --output-on-failure
							 | 
						||
| 
								 | 
							
								  ```
							 |