# 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:
* [Friend the tests]
* [TestApi]
* [ForTesting in the style guide](../../styleguide/c++/c++.md)
## How to use this pattern:
```cpp
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:
```cpp
class Foo {
public:
// ... regular public API ...
// Do not call! Only for testing!
void DoStuff();
};
```
[testapi]: testapi.md
[friend the tests]: friend-the-tests.md