Skip to content

An exercise in test-driven development (TDD) with the googlemock framework

License

Notifications You must be signed in to change notification settings

blue-yonder/tdd_exercise_googlemock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Online benchmark TDD kata

Test-driven development is a software development process that basically puts writing a failing unit test before modifying your production code. Googlemock is a framework that supports you with generating mock objects for use in place of real objects. Mock objects can be loaded with expected method calls plus appropriate responses. Any missed expectation will lead to an error.

This repository provides a C++ scaffold to use googlemock with a simple example to help you learn practice TDD together with googlemock.

The task

Implement a benchmarking function that measures the time required to execute a computationally heavy function and upload the result to an "online server".

The online server identifies systems by an ID. The server will only accept a result for an ID if it is better than any previously recorded results for the same ID. Since the server is often under heavy load, interacting with the server may temporarily fail, so please retry the respective operation up to three times in these cases.

You can find the API for the "online server" together with documentation at benchmark/benchmark/benchmark.h. There you also find an example of a function that needs to be benchmarked.

Hints for dealing with time

The C++ standard offers std::chrono::steady_clock::now() to get the current time in an accurate fashion, see here. When you subtract to time_points from each other you get a std::chrono::duration that you can std::chrono::duration_cast to std::chrono::milliseconds.

Quickstart with C++

> git clone https://github.com/blue-yonder/tdd_exercise_googlemock.git
> cd tdd_exercise_googlemock
> cmake .

The header file benchmark/benchmark/benchmark.h is supposed to hold any public declarations you require. The source file benchmark/src/benchmark.cpp is supposed to hold your implementation. Finally, drive your implementation by adding tests to the tests/test_benchmark.cpp file.

To compile your code and execute the unit tests, use the following commands:

> make && ctest --verbose

Running this command for the first time will present you with a failing unit test. The unit test does not do anything meaningful, it is just there to illustrate how writing tests with googlemock works.

About

An exercise in test-driven development (TDD) with the googlemock framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published