The ForTesting Methods Pattern
The ForTesting pattern involves creating public helper methods on a class to
provide access to test-only functionality, and giving them a specific type of
name (XForTesting or XForTest) to provide a signal at the call site that they
are not intended for regular use.
Use this pattern when:
You have a widely-used object that you need to expose a small amount of test functionality on.
Don't use this pattern when:
- You have lots of different ForTesting methods: consider the TestApi pattern instead.
- Only a small set of test cases need access: consider the friend the tests pattern instead, to avoid polluting the public API.
Alternatives / See also:
How to use this pattern:
class Foo {
public:
// ... regular public API ...
void DoStuffForTesting();
};
The ForTesting suffix indicates to code reviewers that the method should not be called in production code. There is a very similar antipattern in which the suffix is missing:
class Foo {
public:
// ... regular public API ...
// Do not call! Only for testing!
void DoStuff();
};