1#ifndef WREPORT_TESTSRUNNER_H
2#define WREPORT_TESTSRUNNER_H
23struct TestMethodResult
49 TestMethodResult(
const std::string& test_case_,
50 const std::string& test_method_)
57 void set_exception(std::exception& e)
62 "test threw an exception with an empty error message";
66 void set_unknown_exception() {
error_message =
"unknown exception caught"; }
68 void set_setup_exception(std::exception& e)
75 void set_teardown_exception(std::exception& e)
84 void print_failure_details(FILE* out)
const;
104 explicit TestCaseResult(
const std::string& test_case_)
109 void set_setup_failed()
111 fail_setup =
"test case setup method threw an unknown exception";
114 void set_setup_failed(std::exception& e)
116 fail_setup =
"test case setup method threw an exception: ";
120 void set_teardown_failed()
122 fail_teardown =
"test case teardown method threw an unknown exception";
125 void set_teardown_failed(std::exception& e)
127 fail_teardown =
"test case teardown method threw an exception: ";
131 void add_test_method(TestMethodResult&& e)
133 methods.emplace_back(std::move(e));
136 bool is_success()
const
146 unsigned long long elapsed_ns()
const;
204 bool test_method_should_run(
const std::string& fullname)
const;
260 std::vector<TestCase*>
entries = std::vector<TestCase*>();
288struct TestResultStats
290 const std::vector<TestCaseResult>& results;
291 unsigned methods_ok = 0;
292 unsigned methods_failed = 0;
293 unsigned methods_skipped = 0;
294 unsigned test_cases_ok = 0;
295 unsigned test_cases_failed = 0;
296 bool success =
false;
297 bool skipped =
false;
299 TestResultStats(
const std::vector<TestCaseResult>& results);
Contrl terminal output.
Definition term.h:14
Utility functions for the unit tests.
Definition tests.h:38
Test controller that filters tests via a blocklist/allowlist system containing glob patterns on testc...
Definition testrunner.h:197
std::string blocklist
Any method matching this glob expression will not be run.
Definition testrunner.h:202
std::string allowlist
Any method not matching this glob expression will not be run.
Definition testrunner.h:199
void test_method_end(const TestMethod &test_method, const TestMethodResult &test_method_result) override
Called after running a test method.
bool test_method_begin(const TestMethod &test_method, const TestMethodResult &test_method_result) override
Called before running a test method.
void test_case_end(const TestCase &test_case, const TestCaseResult &test_case_result) override
Called after running a test case.
bool test_case_begin(const TestCase &test_case, const TestCaseResult &test_case_result) override
Called before running a test case.
Result of running a whole test case.
Definition testrunner.h:91
std::string fail_setup
Set to a non-empty string if the setup method of the test case failed.
Definition testrunner.h:97
std::string fail_teardown
Set to a non-empty string if the teardown method of the test case failed.
Definition testrunner.h:100
std::vector< TestMethodResult > methods
Outcome of all the methods that have been run.
Definition testrunner.h:95
bool skipped
Set to true if this test case has been skipped.
Definition testrunner.h:102
std::string test_case
Name of the test case.
Definition testrunner.h:93
Test case collecting several test methods, and self-registering with the singleton instance of TestRe...
Definition utils/tests.h:703
Abstract interface for the objects that supervise test execution.
Definition testrunner.h:156
virtual bool test_method_begin(const TestMethod &, const TestMethodResult &)
Called before running a test method.
Definition testrunner.h:181
virtual bool test_case_begin(const TestCase &, const TestCaseResult &)
Called before running a test case.
Definition testrunner.h:165
virtual void test_method_end(const TestMethod &, const TestMethodResult &)
Called after running a test method.
Definition testrunner.h:189
virtual void test_case_end(const TestCase &, const TestCaseResult &)
Called after running a test case.
Definition testrunner.h:173
Exception thrown when a test assertion fails, normally by Location::fail_test.
Definition utils/tests.h:104
Result of running a test method.
Definition testrunner.h:24
std::string skipped_reason
If the test has been skipped, this is an optional reason.
Definition testrunner.h:44
std::shared_ptr< TestStack > error_stack
Stack frame of where the error happened.
Definition testrunner.h:35
std::string test_case
Name of the test case.
Definition testrunner.h:26
bool skipped
True if the test has been skipped.
Definition testrunner.h:41
std::string error_message
If non-empty, the test failed with this error.
Definition testrunner.h:32
unsigned long long elapsed_ns
Time in nanoseconds it took the test to run.
Definition testrunner.h:47
std::string exception_typeid
If non-empty, the test threw an exception and this is its type ID.
Definition testrunner.h:38
std::string test_method
Name of the test method.
Definition testrunner.h:29
Test method information.
Definition utils/tests.h:676
Test registry.
Definition testrunner.h:258
void iterate_test_methods(std::function< void(const TestCase &, const TestMethod &)>)
Iterate on all test methods known by this registry.
std::vector< TestCaseResult > run_tests(TestController &controller)
Run all the registered tests using the given controller.
std::vector< TestCase * > entries
All known test cases.
Definition testrunner.h:260
void register_test_case(TestCase &test_case)
Register a new test case.
static TestRegistry & get()
Get the singleton instance of TestRegistry.
Definition utils/tests.h:89
void test_method_end(const TestMethod &test_method, const TestMethodResult &test_method_result) override
Called after running a test method.
bool test_case_begin(const TestCase &test_case, const TestCaseResult &test_case_result) override
Called before running a test case.
void test_case_end(const TestCase &test_case, const TestCaseResult &test_case_result) override
Called after running a test case.
bool test_method_begin(const TestMethod &test_method, const TestMethodResult &test_method_result) override
Called before running a test method.