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".