By Kris Jusiak
Testing in C++ is not easy, it requires a lot of boilerplate code, macro usage and/or understanding of complicated testing frameworks. But it doesn’t have to be like that. C++20 will enable us to reinvent the way we write tests. If taking a glance into the future of testing in C++ peaks your interest this session is for you.
In this case study we will address the difficulty of testing with C++ by implementing a new, fully functional, macro-free testing framework [1] from scratch with modern C++20 features.
The main goal will be to leverage modern C++ in order to make the following snippet compile and run:
- 
int main() {
 - 
"hello world"_test = [] { // Running "hello world"…
 - 
expect(12_i == fib(7)); // hello_world.cpp:3:FAILED [ 12 == 13 ]
 - 
}; // tests: 1 | 1 failed
 - 
} // asserts: 1 | 0 passed | 1 failed
 
The session will also focus on how to design modern testing facilities such as:
- 
Sub/sections
 - 
Parameterized tests
 - 
Behaviour Driven Development (BDD)
 
At the end of this session the audience will have a better understanding of C++20 features such as:
- 
New additions to lambdas
 - 
User Defined Literals (UDL)
 - 
Concepts
 - 
Source Location
 
As well as how and where to apply them. Additionally, attendees will get familiar with a new, expressive way of testing with modern C++.
Let’s get ready to test all the things at ACCU 2020 and follow the Beyonce rule - "If you liked it then you should put a test on it".









                    
                    
