xref: /aosp_15_r20/external/googletest/docs/reference/testing.md (revision 481dde660366d6f317d242b6974ef1b20adb843c)
1*481dde66SAndroid Build Coastguard Worker# Testing Reference
2*481dde66SAndroid Build Coastguard Worker
3*481dde66SAndroid Build Coastguard Worker<!--* toc_depth: 3 *-->
4*481dde66SAndroid Build Coastguard Worker
5*481dde66SAndroid Build Coastguard WorkerThis page lists the facilities provided by GoogleTest for writing test programs.
6*481dde66SAndroid Build Coastguard WorkerTo use them, add `#include <gtest/gtest.h>`.
7*481dde66SAndroid Build Coastguard Worker
8*481dde66SAndroid Build Coastguard Worker## Macros
9*481dde66SAndroid Build Coastguard Worker
10*481dde66SAndroid Build Coastguard WorkerGoogleTest defines the following macros for writing tests.
11*481dde66SAndroid Build Coastguard Worker
12*481dde66SAndroid Build Coastguard Worker### TEST {#TEST}
13*481dde66SAndroid Build Coastguard Worker
14*481dde66SAndroid Build Coastguard Worker<pre>
15*481dde66SAndroid Build Coastguard WorkerTEST(<em>TestSuiteName</em>, <em>TestName</em>) {
16*481dde66SAndroid Build Coastguard Worker  ... <em>statements</em> ...
17*481dde66SAndroid Build Coastguard Worker}
18*481dde66SAndroid Build Coastguard Worker</pre>
19*481dde66SAndroid Build Coastguard Worker
20*481dde66SAndroid Build Coastguard WorkerDefines an individual test named *`TestName`* in the test suite
21*481dde66SAndroid Build Coastguard Worker*`TestSuiteName`*, consisting of the given statements.
22*481dde66SAndroid Build Coastguard Worker
23*481dde66SAndroid Build Coastguard WorkerBoth arguments *`TestSuiteName`* and *`TestName`* must be valid C++ identifiers
24*481dde66SAndroid Build Coastguard Workerand must not contain underscores (`_`). Tests in different test suites can have
25*481dde66SAndroid Build Coastguard Workerthe same individual name.
26*481dde66SAndroid Build Coastguard Worker
27*481dde66SAndroid Build Coastguard WorkerThe statements within the test body can be any code under test.
28*481dde66SAndroid Build Coastguard Worker[Assertions](assertions.md) used within the test body determine the outcome of
29*481dde66SAndroid Build Coastguard Workerthe test.
30*481dde66SAndroid Build Coastguard Worker
31*481dde66SAndroid Build Coastguard Worker### TEST_F {#TEST_F}
32*481dde66SAndroid Build Coastguard Worker
33*481dde66SAndroid Build Coastguard Worker<pre>
34*481dde66SAndroid Build Coastguard WorkerTEST_F(<em>TestFixtureName</em>, <em>TestName</em>) {
35*481dde66SAndroid Build Coastguard Worker  ... <em>statements</em> ...
36*481dde66SAndroid Build Coastguard Worker}
37*481dde66SAndroid Build Coastguard Worker</pre>
38*481dde66SAndroid Build Coastguard Worker
39*481dde66SAndroid Build Coastguard WorkerDefines an individual test named *`TestName`* that uses the test fixture class
40*481dde66SAndroid Build Coastguard Worker*`TestFixtureName`*. The test suite name is *`TestFixtureName`*.
41*481dde66SAndroid Build Coastguard Worker
42*481dde66SAndroid Build Coastguard WorkerBoth arguments *`TestFixtureName`* and *`TestName`* must be valid C++
43*481dde66SAndroid Build Coastguard Workeridentifiers and must not contain underscores (`_`). *`TestFixtureName`* must be
44*481dde66SAndroid Build Coastguard Workerthe name of a test fixture class—see
45*481dde66SAndroid Build Coastguard Worker[Test Fixtures](../primer.md#same-data-multiple-tests).
46*481dde66SAndroid Build Coastguard Worker
47*481dde66SAndroid Build Coastguard WorkerThe statements within the test body can be any code under test.
48*481dde66SAndroid Build Coastguard Worker[Assertions](assertions.md) used within the test body determine the outcome of
49*481dde66SAndroid Build Coastguard Workerthe test.
50*481dde66SAndroid Build Coastguard Worker
51*481dde66SAndroid Build Coastguard Worker### TEST_P {#TEST_P}
52*481dde66SAndroid Build Coastguard Worker
53*481dde66SAndroid Build Coastguard Worker<pre>
54*481dde66SAndroid Build Coastguard WorkerTEST_P(<em>TestFixtureName</em>, <em>TestName</em>) {
55*481dde66SAndroid Build Coastguard Worker  ... <em>statements</em> ...
56*481dde66SAndroid Build Coastguard Worker}
57*481dde66SAndroid Build Coastguard Worker</pre>
58*481dde66SAndroid Build Coastguard Worker
59*481dde66SAndroid Build Coastguard WorkerDefines an individual value-parameterized test named *`TestName`* that uses the
60*481dde66SAndroid Build Coastguard Workertest fixture class *`TestFixtureName`*. The test suite name is
61*481dde66SAndroid Build Coastguard Worker*`TestFixtureName`*.
62*481dde66SAndroid Build Coastguard Worker
63*481dde66SAndroid Build Coastguard WorkerBoth arguments *`TestFixtureName`* and *`TestName`* must be valid C++
64*481dde66SAndroid Build Coastguard Workeridentifiers and must not contain underscores (`_`). *`TestFixtureName`* must be
65*481dde66SAndroid Build Coastguard Workerthe name of a value-parameterized test fixture class—see
66*481dde66SAndroid Build Coastguard Worker[Value-Parameterized Tests](../advanced.md#value-parameterized-tests).
67*481dde66SAndroid Build Coastguard Worker
68*481dde66SAndroid Build Coastguard WorkerThe statements within the test body can be any code under test. Within the test
69*481dde66SAndroid Build Coastguard Workerbody, the test parameter can be accessed with the `GetParam()` function (see
70*481dde66SAndroid Build Coastguard Worker[`WithParamInterface`](#WithParamInterface)). For example:
71*481dde66SAndroid Build Coastguard Worker
72*481dde66SAndroid Build Coastguard Worker```cpp
73*481dde66SAndroid Build Coastguard WorkerTEST_P(MyTestSuite, DoesSomething) {
74*481dde66SAndroid Build Coastguard Worker  ...
75*481dde66SAndroid Build Coastguard Worker  EXPECT_TRUE(DoSomething(GetParam()));
76*481dde66SAndroid Build Coastguard Worker  ...
77*481dde66SAndroid Build Coastguard Worker}
78*481dde66SAndroid Build Coastguard Worker```
79*481dde66SAndroid Build Coastguard Worker
80*481dde66SAndroid Build Coastguard Worker[Assertions](assertions.md) used within the test body determine the outcome of
81*481dde66SAndroid Build Coastguard Workerthe test.
82*481dde66SAndroid Build Coastguard Worker
83*481dde66SAndroid Build Coastguard WorkerSee also [`INSTANTIATE_TEST_SUITE_P`](#INSTANTIATE_TEST_SUITE_P).
84*481dde66SAndroid Build Coastguard Worker
85*481dde66SAndroid Build Coastguard Worker### INSTANTIATE_TEST_SUITE_P {#INSTANTIATE_TEST_SUITE_P}
86*481dde66SAndroid Build Coastguard Worker
87*481dde66SAndroid Build Coastguard Worker`INSTANTIATE_TEST_SUITE_P(`*`InstantiationName`*`,`*`TestSuiteName`*`,`*`param_generator`*`)`
88*481dde66SAndroid Build Coastguard Worker\
89*481dde66SAndroid Build Coastguard Worker`INSTANTIATE_TEST_SUITE_P(`*`InstantiationName`*`,`*`TestSuiteName`*`,`*`param_generator`*`,`*`name_generator`*`)`
90*481dde66SAndroid Build Coastguard Worker
91*481dde66SAndroid Build Coastguard WorkerInstantiates the value-parameterized test suite *`TestSuiteName`* (defined with
92*481dde66SAndroid Build Coastguard Worker[`TEST_P`](#TEST_P)).
93*481dde66SAndroid Build Coastguard Worker
94*481dde66SAndroid Build Coastguard WorkerThe argument *`InstantiationName`* is a unique name for the instantiation of the
95*481dde66SAndroid Build Coastguard Workertest suite, to distinguish between multiple instantiations. In test output, the
96*481dde66SAndroid Build Coastguard Workerinstantiation name is added as a prefix to the test suite name
97*481dde66SAndroid Build Coastguard Worker*`TestSuiteName`*. If *`InstantiationName`* is empty
98*481dde66SAndroid Build Coastguard Worker(`INSTANTIATE_TEST_SUITE_P(, ...)`), no prefix is added.
99*481dde66SAndroid Build Coastguard Worker
100*481dde66SAndroid Build Coastguard WorkerThe argument *`param_generator`* is one of the following GoogleTest-provided
101*481dde66SAndroid Build Coastguard Workerfunctions that generate the test parameters, all defined in the `::testing`
102*481dde66SAndroid Build Coastguard Workernamespace:
103*481dde66SAndroid Build Coastguard Worker
104*481dde66SAndroid Build Coastguard Worker<span id="param-generators"></span>
105*481dde66SAndroid Build Coastguard Worker
106*481dde66SAndroid Build Coastguard Worker| Parameter Generator | Behavior                                             |
107*481dde66SAndroid Build Coastguard Worker| ------------------- | ---------------------------------------------------- |
108*481dde66SAndroid Build Coastguard Worker| `Range(begin, end [, step])` | Yields values `{begin, begin+step, begin+step+step, ...}`. The values do not include `end`. `step` defaults to 1. |
109*481dde66SAndroid Build Coastguard Worker| `Values(v1, v2, ..., vN)`    | Yields values `{v1, v2, ..., vN}`.          |
110*481dde66SAndroid Build Coastguard Worker| `ValuesIn(container)` or `ValuesIn(begin,end)` | Yields values from a C-style array, an STL-style container, or an iterator range `[begin, end)`. |
111*481dde66SAndroid Build Coastguard Worker| `Bool()`                     | Yields sequence `{false, true}`.            |
112*481dde66SAndroid Build Coastguard Worker| `Combine(g1, g2, ..., gN)`   | Yields as `std::tuple` *n*-tuples all combinations (Cartesian product) of the values generated by the given *n* generators `g1`, `g2`, ..., `gN`. |
113*481dde66SAndroid Build Coastguard Worker| `ConvertGenerator<T>(g)`     | Yields values generated by generator `g`, `static_cast` to `T`. |
114*481dde66SAndroid Build Coastguard Worker
115*481dde66SAndroid Build Coastguard WorkerThe optional last argument *`name_generator`* is a function or functor that
116*481dde66SAndroid Build Coastguard Workergenerates custom test name suffixes based on the test parameters. The function
117*481dde66SAndroid Build Coastguard Workermust accept an argument of type
118*481dde66SAndroid Build Coastguard Worker[`TestParamInfo<class ParamType>`](#TestParamInfo) and return a `std::string`.
119*481dde66SAndroid Build Coastguard WorkerThe test name suffix can only contain alphanumeric characters and underscores.
120*481dde66SAndroid Build Coastguard WorkerGoogleTest provides [`PrintToStringParamName`](#PrintToStringParamName), or a
121*481dde66SAndroid Build Coastguard Workercustom function can be used for more control:
122*481dde66SAndroid Build Coastguard Worker
123*481dde66SAndroid Build Coastguard Worker```cpp
124*481dde66SAndroid Build Coastguard WorkerINSTANTIATE_TEST_SUITE_P(
125*481dde66SAndroid Build Coastguard Worker    MyInstantiation, MyTestSuite,
126*481dde66SAndroid Build Coastguard Worker    testing::Values(...),
127*481dde66SAndroid Build Coastguard Worker    [](const testing::TestParamInfo<MyTestSuite::ParamType>& info) {
128*481dde66SAndroid Build Coastguard Worker      // Can use info.param here to generate the test suffix
129*481dde66SAndroid Build Coastguard Worker      std::string name = ...
130*481dde66SAndroid Build Coastguard Worker      return name;
131*481dde66SAndroid Build Coastguard Worker    });
132*481dde66SAndroid Build Coastguard Worker```
133*481dde66SAndroid Build Coastguard Worker
134*481dde66SAndroid Build Coastguard WorkerFor more information, see
135*481dde66SAndroid Build Coastguard Worker[Value-Parameterized Tests](../advanced.md#value-parameterized-tests).
136*481dde66SAndroid Build Coastguard Worker
137*481dde66SAndroid Build Coastguard WorkerSee also
138*481dde66SAndroid Build Coastguard Worker[`GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST`](#GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST).
139*481dde66SAndroid Build Coastguard Worker
140*481dde66SAndroid Build Coastguard Worker### TYPED_TEST_SUITE {#TYPED_TEST_SUITE}
141*481dde66SAndroid Build Coastguard Worker
142*481dde66SAndroid Build Coastguard Worker`TYPED_TEST_SUITE(`*`TestFixtureName`*`,`*`Types`*`)`
143*481dde66SAndroid Build Coastguard Worker`TYPED_TEST_SUITE(`*`TestFixtureName`*`,`*`Types`*`,`*`NameGenerator`*`)`
144*481dde66SAndroid Build Coastguard Worker
145*481dde66SAndroid Build Coastguard WorkerDefines a typed test suite based on the test fixture *`TestFixtureName`*. The
146*481dde66SAndroid Build Coastguard Workertest suite name is *`TestFixtureName`*.
147*481dde66SAndroid Build Coastguard Worker
148*481dde66SAndroid Build Coastguard WorkerThe argument *`TestFixtureName`* is a fixture class template, parameterized by a
149*481dde66SAndroid Build Coastguard Workertype, for example:
150*481dde66SAndroid Build Coastguard Worker
151*481dde66SAndroid Build Coastguard Worker```cpp
152*481dde66SAndroid Build Coastguard Workertemplate <typename T>
153*481dde66SAndroid Build Coastguard Workerclass MyFixture : public testing::Test {
154*481dde66SAndroid Build Coastguard Worker public:
155*481dde66SAndroid Build Coastguard Worker  ...
156*481dde66SAndroid Build Coastguard Worker  using List = std::list<T>;
157*481dde66SAndroid Build Coastguard Worker  static T shared_;
158*481dde66SAndroid Build Coastguard Worker  T value_;
159*481dde66SAndroid Build Coastguard Worker};
160*481dde66SAndroid Build Coastguard Worker```
161*481dde66SAndroid Build Coastguard Worker
162*481dde66SAndroid Build Coastguard WorkerThe argument *`Types`* is a [`Types`](#Types) object representing the list of
163*481dde66SAndroid Build Coastguard Workertypes to run the tests on, for example:
164*481dde66SAndroid Build Coastguard Worker
165*481dde66SAndroid Build Coastguard Worker```cpp
166*481dde66SAndroid Build Coastguard Workerusing MyTypes = ::testing::Types<char, int, unsigned int>;
167*481dde66SAndroid Build Coastguard WorkerTYPED_TEST_SUITE(MyFixture, MyTypes);
168*481dde66SAndroid Build Coastguard Worker```
169*481dde66SAndroid Build Coastguard Worker
170*481dde66SAndroid Build Coastguard WorkerThe type alias (`using` or `typedef`) is necessary for the `TYPED_TEST_SUITE`
171*481dde66SAndroid Build Coastguard Workermacro to parse correctly.
172*481dde66SAndroid Build Coastguard Worker
173*481dde66SAndroid Build Coastguard WorkerThe optional third argument *`NameGenerator`* allows specifying a class that
174*481dde66SAndroid Build Coastguard Workerexposes a templated static function `GetName(int)`. For example:
175*481dde66SAndroid Build Coastguard Worker
176*481dde66SAndroid Build Coastguard Worker```cpp
177*481dde66SAndroid Build Coastguard Workerclass NameGenerator {
178*481dde66SAndroid Build Coastguard Worker public:
179*481dde66SAndroid Build Coastguard Worker  template <typename T>
180*481dde66SAndroid Build Coastguard Worker  static std::string GetName(int) {
181*481dde66SAndroid Build Coastguard Worker    if constexpr (std::is_same_v<T, char>) return "char";
182*481dde66SAndroid Build Coastguard Worker    if constexpr (std::is_same_v<T, int>) return "int";
183*481dde66SAndroid Build Coastguard Worker    if constexpr (std::is_same_v<T, unsigned int>) return "unsignedInt";
184*481dde66SAndroid Build Coastguard Worker  }
185*481dde66SAndroid Build Coastguard Worker};
186*481dde66SAndroid Build Coastguard WorkerTYPED_TEST_SUITE(MyFixture, MyTypes, NameGenerator);
187*481dde66SAndroid Build Coastguard Worker```
188*481dde66SAndroid Build Coastguard Worker
189*481dde66SAndroid Build Coastguard WorkerSee also [`TYPED_TEST`](#TYPED_TEST) and
190*481dde66SAndroid Build Coastguard Worker[Typed Tests](../advanced.md#typed-tests) for more information.
191*481dde66SAndroid Build Coastguard Worker
192*481dde66SAndroid Build Coastguard Worker### TYPED_TEST {#TYPED_TEST}
193*481dde66SAndroid Build Coastguard Worker
194*481dde66SAndroid Build Coastguard Worker<pre>
195*481dde66SAndroid Build Coastguard WorkerTYPED_TEST(<em>TestSuiteName</em>, <em>TestName</em>) {
196*481dde66SAndroid Build Coastguard Worker  ... <em>statements</em> ...
197*481dde66SAndroid Build Coastguard Worker}
198*481dde66SAndroid Build Coastguard Worker</pre>
199*481dde66SAndroid Build Coastguard Worker
200*481dde66SAndroid Build Coastguard WorkerDefines an individual typed test named *`TestName`* in the typed test suite
201*481dde66SAndroid Build Coastguard Worker*`TestSuiteName`*. The test suite must be defined with
202*481dde66SAndroid Build Coastguard Worker[`TYPED_TEST_SUITE`](#TYPED_TEST_SUITE).
203*481dde66SAndroid Build Coastguard Worker
204*481dde66SAndroid Build Coastguard WorkerWithin the test body, the special name `TypeParam` refers to the type parameter,
205*481dde66SAndroid Build Coastguard Workerand `TestFixture` refers to the fixture class. See the following example:
206*481dde66SAndroid Build Coastguard Worker
207*481dde66SAndroid Build Coastguard Worker```cpp
208*481dde66SAndroid Build Coastguard WorkerTYPED_TEST(MyFixture, Example) {
209*481dde66SAndroid Build Coastguard Worker  // Inside a test, refer to the special name TypeParam to get the type
210*481dde66SAndroid Build Coastguard Worker  // parameter.  Since we are inside a derived class template, C++ requires
211*481dde66SAndroid Build Coastguard Worker  // us to visit the members of MyFixture via 'this'.
212*481dde66SAndroid Build Coastguard Worker  TypeParam n = this->value_;
213*481dde66SAndroid Build Coastguard Worker
214*481dde66SAndroid Build Coastguard Worker  // To visit static members of the fixture, add the 'TestFixture::'
215*481dde66SAndroid Build Coastguard Worker  // prefix.
216*481dde66SAndroid Build Coastguard Worker  n += TestFixture::shared_;
217*481dde66SAndroid Build Coastguard Worker
218*481dde66SAndroid Build Coastguard Worker  // To refer to typedefs in the fixture, add the 'typename TestFixture::'
219*481dde66SAndroid Build Coastguard Worker  // prefix. The 'typename' is required to satisfy the compiler.
220*481dde66SAndroid Build Coastguard Worker  typename TestFixture::List values;
221*481dde66SAndroid Build Coastguard Worker
222*481dde66SAndroid Build Coastguard Worker  values.push_back(n);
223*481dde66SAndroid Build Coastguard Worker  ...
224*481dde66SAndroid Build Coastguard Worker}
225*481dde66SAndroid Build Coastguard Worker```
226*481dde66SAndroid Build Coastguard Worker
227*481dde66SAndroid Build Coastguard WorkerFor more information, see [Typed Tests](../advanced.md#typed-tests).
228*481dde66SAndroid Build Coastguard Worker
229*481dde66SAndroid Build Coastguard Worker### TYPED_TEST_SUITE_P {#TYPED_TEST_SUITE_P}
230*481dde66SAndroid Build Coastguard Worker
231*481dde66SAndroid Build Coastguard Worker`TYPED_TEST_SUITE_P(`*`TestFixtureName`*`)`
232*481dde66SAndroid Build Coastguard Worker
233*481dde66SAndroid Build Coastguard WorkerDefines a type-parameterized test suite based on the test fixture
234*481dde66SAndroid Build Coastguard Worker*`TestFixtureName`*. The test suite name is *`TestFixtureName`*.
235*481dde66SAndroid Build Coastguard Worker
236*481dde66SAndroid Build Coastguard WorkerThe argument *`TestFixtureName`* is a fixture class template, parameterized by a
237*481dde66SAndroid Build Coastguard Workertype. See [`TYPED_TEST_SUITE`](#TYPED_TEST_SUITE) for an example.
238*481dde66SAndroid Build Coastguard Worker
239*481dde66SAndroid Build Coastguard WorkerSee also [`TYPED_TEST_P`](#TYPED_TEST_P) and
240*481dde66SAndroid Build Coastguard Worker[Type-Parameterized Tests](../advanced.md#type-parameterized-tests) for more
241*481dde66SAndroid Build Coastguard Workerinformation.
242*481dde66SAndroid Build Coastguard Worker
243*481dde66SAndroid Build Coastguard Worker### TYPED_TEST_P {#TYPED_TEST_P}
244*481dde66SAndroid Build Coastguard Worker
245*481dde66SAndroid Build Coastguard Worker<pre>
246*481dde66SAndroid Build Coastguard WorkerTYPED_TEST_P(<em>TestSuiteName</em>, <em>TestName</em>) {
247*481dde66SAndroid Build Coastguard Worker  ... <em>statements</em> ...
248*481dde66SAndroid Build Coastguard Worker}
249*481dde66SAndroid Build Coastguard Worker</pre>
250*481dde66SAndroid Build Coastguard Worker
251*481dde66SAndroid Build Coastguard WorkerDefines an individual type-parameterized test named *`TestName`* in the
252*481dde66SAndroid Build Coastguard Workertype-parameterized test suite *`TestSuiteName`*. The test suite must be defined
253*481dde66SAndroid Build Coastguard Workerwith [`TYPED_TEST_SUITE_P`](#TYPED_TEST_SUITE_P).
254*481dde66SAndroid Build Coastguard Worker
255*481dde66SAndroid Build Coastguard WorkerWithin the test body, the special name `TypeParam` refers to the type parameter,
256*481dde66SAndroid Build Coastguard Workerand `TestFixture` refers to the fixture class. See [`TYPED_TEST`](#TYPED_TEST)
257*481dde66SAndroid Build Coastguard Workerfor an example.
258*481dde66SAndroid Build Coastguard Worker
259*481dde66SAndroid Build Coastguard WorkerSee also [`REGISTER_TYPED_TEST_SUITE_P`](#REGISTER_TYPED_TEST_SUITE_P) and
260*481dde66SAndroid Build Coastguard Worker[Type-Parameterized Tests](../advanced.md#type-parameterized-tests) for more
261*481dde66SAndroid Build Coastguard Workerinformation.
262*481dde66SAndroid Build Coastguard Worker
263*481dde66SAndroid Build Coastguard Worker### REGISTER_TYPED_TEST_SUITE_P {#REGISTER_TYPED_TEST_SUITE_P}
264*481dde66SAndroid Build Coastguard Worker
265*481dde66SAndroid Build Coastguard Worker`REGISTER_TYPED_TEST_SUITE_P(`*`TestSuiteName`*`,`*`TestNames...`*`)`
266*481dde66SAndroid Build Coastguard Worker
267*481dde66SAndroid Build Coastguard WorkerRegisters the type-parameterized tests *`TestNames...`* of the test suite
268*481dde66SAndroid Build Coastguard Worker*`TestSuiteName`*. The test suite and tests must be defined with
269*481dde66SAndroid Build Coastguard Worker[`TYPED_TEST_SUITE_P`](#TYPED_TEST_SUITE_P) and [`TYPED_TEST_P`](#TYPED_TEST_P).
270*481dde66SAndroid Build Coastguard Worker
271*481dde66SAndroid Build Coastguard WorkerFor example:
272*481dde66SAndroid Build Coastguard Worker
273*481dde66SAndroid Build Coastguard Worker```cpp
274*481dde66SAndroid Build Coastguard Worker// Define the test suite and tests.
275*481dde66SAndroid Build Coastguard WorkerTYPED_TEST_SUITE_P(MyFixture);
276*481dde66SAndroid Build Coastguard WorkerTYPED_TEST_P(MyFixture, HasPropertyA) { ... }
277*481dde66SAndroid Build Coastguard WorkerTYPED_TEST_P(MyFixture, HasPropertyB) { ... }
278*481dde66SAndroid Build Coastguard Worker
279*481dde66SAndroid Build Coastguard Worker// Register the tests in the test suite.
280*481dde66SAndroid Build Coastguard WorkerREGISTER_TYPED_TEST_SUITE_P(MyFixture, HasPropertyA, HasPropertyB);
281*481dde66SAndroid Build Coastguard Worker```
282*481dde66SAndroid Build Coastguard Worker
283*481dde66SAndroid Build Coastguard WorkerSee also [`INSTANTIATE_TYPED_TEST_SUITE_P`](#INSTANTIATE_TYPED_TEST_SUITE_P) and
284*481dde66SAndroid Build Coastguard Worker[Type-Parameterized Tests](../advanced.md#type-parameterized-tests) for more
285*481dde66SAndroid Build Coastguard Workerinformation.
286*481dde66SAndroid Build Coastguard Worker
287*481dde66SAndroid Build Coastguard Worker### INSTANTIATE_TYPED_TEST_SUITE_P {#INSTANTIATE_TYPED_TEST_SUITE_P}
288*481dde66SAndroid Build Coastguard Worker
289*481dde66SAndroid Build Coastguard Worker`INSTANTIATE_TYPED_TEST_SUITE_P(`*`InstantiationName`*`,`*`TestSuiteName`*`,`*`Types`*`)`
290*481dde66SAndroid Build Coastguard Worker
291*481dde66SAndroid Build Coastguard WorkerInstantiates the type-parameterized test suite *`TestSuiteName`*. The test suite
292*481dde66SAndroid Build Coastguard Workermust be registered with
293*481dde66SAndroid Build Coastguard Worker[`REGISTER_TYPED_TEST_SUITE_P`](#REGISTER_TYPED_TEST_SUITE_P).
294*481dde66SAndroid Build Coastguard Worker
295*481dde66SAndroid Build Coastguard WorkerThe argument *`InstantiationName`* is a unique name for the instantiation of the
296*481dde66SAndroid Build Coastguard Workertest suite, to distinguish between multiple instantiations. In test output, the
297*481dde66SAndroid Build Coastguard Workerinstantiation name is added as a prefix to the test suite name
298*481dde66SAndroid Build Coastguard Worker*`TestSuiteName`*. If *`InstantiationName`* is empty
299*481dde66SAndroid Build Coastguard Worker(`INSTANTIATE_TYPED_TEST_SUITE_P(, ...)`), no prefix is added.
300*481dde66SAndroid Build Coastguard Worker
301*481dde66SAndroid Build Coastguard WorkerThe argument *`Types`* is a [`Types`](#Types) object representing the list of
302*481dde66SAndroid Build Coastguard Workertypes to run the tests on, for example:
303*481dde66SAndroid Build Coastguard Worker
304*481dde66SAndroid Build Coastguard Worker```cpp
305*481dde66SAndroid Build Coastguard Workerusing MyTypes = ::testing::Types<char, int, unsigned int>;
306*481dde66SAndroid Build Coastguard WorkerINSTANTIATE_TYPED_TEST_SUITE_P(MyInstantiation, MyFixture, MyTypes);
307*481dde66SAndroid Build Coastguard Worker```
308*481dde66SAndroid Build Coastguard Worker
309*481dde66SAndroid Build Coastguard WorkerThe type alias (`using` or `typedef`) is necessary for the
310*481dde66SAndroid Build Coastguard Worker`INSTANTIATE_TYPED_TEST_SUITE_P` macro to parse correctly.
311*481dde66SAndroid Build Coastguard Worker
312*481dde66SAndroid Build Coastguard WorkerFor more information, see
313*481dde66SAndroid Build Coastguard Worker[Type-Parameterized Tests](../advanced.md#type-parameterized-tests).
314*481dde66SAndroid Build Coastguard Worker
315*481dde66SAndroid Build Coastguard Worker### FRIEND_TEST {#FRIEND_TEST}
316*481dde66SAndroid Build Coastguard Worker
317*481dde66SAndroid Build Coastguard Worker`FRIEND_TEST(`*`TestSuiteName`*`,`*`TestName`*`)`
318*481dde66SAndroid Build Coastguard Worker
319*481dde66SAndroid Build Coastguard WorkerWithin a class body, declares an individual test as a friend of the class,
320*481dde66SAndroid Build Coastguard Workerenabling the test to access private class members.
321*481dde66SAndroid Build Coastguard Worker
322*481dde66SAndroid Build Coastguard WorkerIf the class is defined in a namespace, then in order to be friends of the
323*481dde66SAndroid Build Coastguard Workerclass, test fixtures and tests must be defined in the exact same namespace,
324*481dde66SAndroid Build Coastguard Workerwithout inline or anonymous namespaces.
325*481dde66SAndroid Build Coastguard Worker
326*481dde66SAndroid Build Coastguard WorkerFor example, if the class definition looks like the following:
327*481dde66SAndroid Build Coastguard Worker
328*481dde66SAndroid Build Coastguard Worker```cpp
329*481dde66SAndroid Build Coastguard Workernamespace my_namespace {
330*481dde66SAndroid Build Coastguard Worker
331*481dde66SAndroid Build Coastguard Workerclass MyClass {
332*481dde66SAndroid Build Coastguard Worker  friend class MyClassTest;
333*481dde66SAndroid Build Coastguard Worker  FRIEND_TEST(MyClassTest, HasPropertyA);
334*481dde66SAndroid Build Coastguard Worker  FRIEND_TEST(MyClassTest, HasPropertyB);
335*481dde66SAndroid Build Coastguard Worker  ... definition of class MyClass ...
336*481dde66SAndroid Build Coastguard Worker};
337*481dde66SAndroid Build Coastguard Worker
338*481dde66SAndroid Build Coastguard Worker}  // namespace my_namespace
339*481dde66SAndroid Build Coastguard Worker```
340*481dde66SAndroid Build Coastguard Worker
341*481dde66SAndroid Build Coastguard WorkerThen the test code should look like:
342*481dde66SAndroid Build Coastguard Worker
343*481dde66SAndroid Build Coastguard Worker```cpp
344*481dde66SAndroid Build Coastguard Workernamespace my_namespace {
345*481dde66SAndroid Build Coastguard Worker
346*481dde66SAndroid Build Coastguard Workerclass MyClassTest : public testing::Test {
347*481dde66SAndroid Build Coastguard Worker  ...
348*481dde66SAndroid Build Coastguard Worker};
349*481dde66SAndroid Build Coastguard Worker
350*481dde66SAndroid Build Coastguard WorkerTEST_F(MyClassTest, HasPropertyA) { ... }
351*481dde66SAndroid Build Coastguard WorkerTEST_F(MyClassTest, HasPropertyB) { ... }
352*481dde66SAndroid Build Coastguard Worker
353*481dde66SAndroid Build Coastguard Worker}  // namespace my_namespace
354*481dde66SAndroid Build Coastguard Worker```
355*481dde66SAndroid Build Coastguard Worker
356*481dde66SAndroid Build Coastguard WorkerSee [Testing Private Code](../advanced.md#testing-private-code) for more
357*481dde66SAndroid Build Coastguard Workerinformation.
358*481dde66SAndroid Build Coastguard Worker
359*481dde66SAndroid Build Coastguard Worker### SCOPED_TRACE {#SCOPED_TRACE}
360*481dde66SAndroid Build Coastguard Worker
361*481dde66SAndroid Build Coastguard Worker`SCOPED_TRACE(`*`message`*`)`
362*481dde66SAndroid Build Coastguard Worker
363*481dde66SAndroid Build Coastguard WorkerCauses the current file name, line number, and the given message *`message`* to
364*481dde66SAndroid Build Coastguard Workerbe added to the failure message for each assertion failure that occurs in the
365*481dde66SAndroid Build Coastguard Workerscope.
366*481dde66SAndroid Build Coastguard Worker
367*481dde66SAndroid Build Coastguard WorkerFor more information, see
368*481dde66SAndroid Build Coastguard Worker[Adding Traces to Assertions](../advanced.md#adding-traces-to-assertions).
369*481dde66SAndroid Build Coastguard Worker
370*481dde66SAndroid Build Coastguard WorkerSee also the [`ScopedTrace` class](#ScopedTrace).
371*481dde66SAndroid Build Coastguard Worker
372*481dde66SAndroid Build Coastguard Worker### GTEST_SKIP {#GTEST_SKIP}
373*481dde66SAndroid Build Coastguard Worker
374*481dde66SAndroid Build Coastguard Worker`GTEST_SKIP()`
375*481dde66SAndroid Build Coastguard Worker
376*481dde66SAndroid Build Coastguard WorkerPrevents further test execution at runtime.
377*481dde66SAndroid Build Coastguard Worker
378*481dde66SAndroid Build Coastguard WorkerCan be used in individual test cases or in the `SetUp()` methods of test
379*481dde66SAndroid Build Coastguard Workerenvironments or test fixtures (classes derived from the
380*481dde66SAndroid Build Coastguard Worker[`Environment`](#Environment) or [`Test`](#Test) classes). If used in a global
381*481dde66SAndroid Build Coastguard Workertest environment `SetUp()` method, it skips all tests in the test program. If
382*481dde66SAndroid Build Coastguard Workerused in a test fixture `SetUp()` method, it skips all tests in the corresponding
383*481dde66SAndroid Build Coastguard Workertest suite.
384*481dde66SAndroid Build Coastguard Worker
385*481dde66SAndroid Build Coastguard WorkerSimilar to assertions, `GTEST_SKIP` allows streaming a custom message into it.
386*481dde66SAndroid Build Coastguard Worker
387*481dde66SAndroid Build Coastguard WorkerSee [Skipping Test Execution](../advanced.md#skipping-test-execution) for more
388*481dde66SAndroid Build Coastguard Workerinformation.
389*481dde66SAndroid Build Coastguard Worker
390*481dde66SAndroid Build Coastguard Worker### GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST {#GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST}
391*481dde66SAndroid Build Coastguard Worker
392*481dde66SAndroid Build Coastguard Worker`GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(`*`TestSuiteName`*`)`
393*481dde66SAndroid Build Coastguard Worker
394*481dde66SAndroid Build Coastguard WorkerAllows the value-parameterized test suite *`TestSuiteName`* to be
395*481dde66SAndroid Build Coastguard Workeruninstantiated.
396*481dde66SAndroid Build Coastguard Worker
397*481dde66SAndroid Build Coastguard WorkerBy default, every [`TEST_P`](#TEST_P) call without a corresponding
398*481dde66SAndroid Build Coastguard Worker[`INSTANTIATE_TEST_SUITE_P`](#INSTANTIATE_TEST_SUITE_P) call causes a failing
399*481dde66SAndroid Build Coastguard Workertest in the test suite `GoogleTestVerification`.
400*481dde66SAndroid Build Coastguard Worker`GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST` suppresses this failure for the
401*481dde66SAndroid Build Coastguard Workergiven test suite.
402*481dde66SAndroid Build Coastguard Worker
403*481dde66SAndroid Build Coastguard Worker## Classes and types
404*481dde66SAndroid Build Coastguard Worker
405*481dde66SAndroid Build Coastguard WorkerGoogleTest defines the following classes and types to help with writing tests.
406*481dde66SAndroid Build Coastguard Worker
407*481dde66SAndroid Build Coastguard Worker### AssertionResult {#AssertionResult}
408*481dde66SAndroid Build Coastguard Worker
409*481dde66SAndroid Build Coastguard Worker`testing::AssertionResult`
410*481dde66SAndroid Build Coastguard Worker
411*481dde66SAndroid Build Coastguard WorkerA class for indicating whether an assertion was successful.
412*481dde66SAndroid Build Coastguard Worker
413*481dde66SAndroid Build Coastguard WorkerWhen the assertion wasn't successful, the `AssertionResult` object stores a
414*481dde66SAndroid Build Coastguard Workernon-empty failure message that can be retrieved with the object's `message()`
415*481dde66SAndroid Build Coastguard Workermethod.
416*481dde66SAndroid Build Coastguard Worker
417*481dde66SAndroid Build Coastguard WorkerTo create an instance of this class, use one of the factory functions
418*481dde66SAndroid Build Coastguard Worker[`AssertionSuccess()`](#AssertionSuccess) or
419*481dde66SAndroid Build Coastguard Worker[`AssertionFailure()`](#AssertionFailure).
420*481dde66SAndroid Build Coastguard Worker
421*481dde66SAndroid Build Coastguard Worker### AssertionException {#AssertionException}
422*481dde66SAndroid Build Coastguard Worker
423*481dde66SAndroid Build Coastguard Worker`testing::AssertionException`
424*481dde66SAndroid Build Coastguard Worker
425*481dde66SAndroid Build Coastguard WorkerException which can be thrown from
426*481dde66SAndroid Build Coastguard Worker[`TestEventListener::OnTestPartResult`](#TestEventListener::OnTestPartResult).
427*481dde66SAndroid Build Coastguard Worker
428*481dde66SAndroid Build Coastguard Worker### EmptyTestEventListener {#EmptyTestEventListener}
429*481dde66SAndroid Build Coastguard Worker
430*481dde66SAndroid Build Coastguard Worker`testing::EmptyTestEventListener`
431*481dde66SAndroid Build Coastguard Worker
432*481dde66SAndroid Build Coastguard WorkerProvides an empty implementation of all methods in the
433*481dde66SAndroid Build Coastguard Worker[`TestEventListener`](#TestEventListener) interface, such that a subclass only
434*481dde66SAndroid Build Coastguard Workerneeds to override the methods it cares about.
435*481dde66SAndroid Build Coastguard Worker
436*481dde66SAndroid Build Coastguard Worker### Environment {#Environment}
437*481dde66SAndroid Build Coastguard Worker
438*481dde66SAndroid Build Coastguard Worker`testing::Environment`
439*481dde66SAndroid Build Coastguard Worker
440*481dde66SAndroid Build Coastguard WorkerRepresents a global test environment. See
441*481dde66SAndroid Build Coastguard Worker[Global Set-Up and Tear-Down](../advanced.md#global-set-up-and-tear-down).
442*481dde66SAndroid Build Coastguard Worker
443*481dde66SAndroid Build Coastguard Worker#### Protected Methods {#Environment-protected}
444*481dde66SAndroid Build Coastguard Worker
445*481dde66SAndroid Build Coastguard Worker##### SetUp {#Environment::SetUp}
446*481dde66SAndroid Build Coastguard Worker
447*481dde66SAndroid Build Coastguard Worker`virtual void Environment::SetUp()`
448*481dde66SAndroid Build Coastguard Worker
449*481dde66SAndroid Build Coastguard WorkerOverride this to define how to set up the environment.
450*481dde66SAndroid Build Coastguard Worker
451*481dde66SAndroid Build Coastguard Worker##### TearDown {#Environment::TearDown}
452*481dde66SAndroid Build Coastguard Worker
453*481dde66SAndroid Build Coastguard Worker`virtual void Environment::TearDown()`
454*481dde66SAndroid Build Coastguard Worker
455*481dde66SAndroid Build Coastguard WorkerOverride this to define how to tear down the environment.
456*481dde66SAndroid Build Coastguard Worker
457*481dde66SAndroid Build Coastguard Worker### ScopedTrace {#ScopedTrace}
458*481dde66SAndroid Build Coastguard Worker
459*481dde66SAndroid Build Coastguard Worker`testing::ScopedTrace`
460*481dde66SAndroid Build Coastguard Worker
461*481dde66SAndroid Build Coastguard WorkerAn instance of this class causes a trace to be included in every test failure
462*481dde66SAndroid Build Coastguard Workermessage generated by code in the scope of the lifetime of the `ScopedTrace`
463*481dde66SAndroid Build Coastguard Workerinstance. The effect is undone with the destruction of the instance.
464*481dde66SAndroid Build Coastguard Worker
465*481dde66SAndroid Build Coastguard WorkerThe `ScopedTrace` constructor has the following form:
466*481dde66SAndroid Build Coastguard Worker
467*481dde66SAndroid Build Coastguard Worker```cpp
468*481dde66SAndroid Build Coastguard Workertemplate <typename T>
469*481dde66SAndroid Build Coastguard WorkerScopedTrace(const char* file, int line, const T& message)
470*481dde66SAndroid Build Coastguard Worker```
471*481dde66SAndroid Build Coastguard Worker
472*481dde66SAndroid Build Coastguard WorkerExample usage:
473*481dde66SAndroid Build Coastguard Worker
474*481dde66SAndroid Build Coastguard Worker```cpp
475*481dde66SAndroid Build Coastguard Workertesting::ScopedTrace trace("file.cc", 123, "message");
476*481dde66SAndroid Build Coastguard Worker```
477*481dde66SAndroid Build Coastguard Worker
478*481dde66SAndroid Build Coastguard WorkerThe resulting trace includes the given source file path and line number, and the
479*481dde66SAndroid Build Coastguard Workergiven message. The `message` argument can be anything streamable to
480*481dde66SAndroid Build Coastguard Worker`std::ostream`.
481*481dde66SAndroid Build Coastguard Worker
482*481dde66SAndroid Build Coastguard WorkerSee also [`SCOPED_TRACE`](#SCOPED_TRACE).
483*481dde66SAndroid Build Coastguard Worker
484*481dde66SAndroid Build Coastguard Worker### Test {#Test}
485*481dde66SAndroid Build Coastguard Worker
486*481dde66SAndroid Build Coastguard Worker`testing::Test`
487*481dde66SAndroid Build Coastguard Worker
488*481dde66SAndroid Build Coastguard WorkerThe abstract class that all tests inherit from. `Test` is not copyable.
489*481dde66SAndroid Build Coastguard Worker
490*481dde66SAndroid Build Coastguard Worker#### Public Methods {#Test-public}
491*481dde66SAndroid Build Coastguard Worker
492*481dde66SAndroid Build Coastguard Worker##### SetUpTestSuite {#Test::SetUpTestSuite}
493*481dde66SAndroid Build Coastguard Worker
494*481dde66SAndroid Build Coastguard Worker`static void Test::SetUpTestSuite()`
495*481dde66SAndroid Build Coastguard Worker
496*481dde66SAndroid Build Coastguard WorkerPerforms shared setup for all tests in the test suite. GoogleTest calls
497*481dde66SAndroid Build Coastguard Worker`SetUpTestSuite()` before running the first test in the test suite.
498*481dde66SAndroid Build Coastguard Worker
499*481dde66SAndroid Build Coastguard Worker##### TearDownTestSuite {#Test::TearDownTestSuite}
500*481dde66SAndroid Build Coastguard Worker
501*481dde66SAndroid Build Coastguard Worker`static void Test::TearDownTestSuite()`
502*481dde66SAndroid Build Coastguard Worker
503*481dde66SAndroid Build Coastguard WorkerPerforms shared teardown for all tests in the test suite. GoogleTest calls
504*481dde66SAndroid Build Coastguard Worker`TearDownTestSuite()` after running the last test in the test suite.
505*481dde66SAndroid Build Coastguard Worker
506*481dde66SAndroid Build Coastguard Worker##### HasFatalFailure {#Test::HasFatalFailure}
507*481dde66SAndroid Build Coastguard Worker
508*481dde66SAndroid Build Coastguard Worker`static bool Test::HasFatalFailure()`
509*481dde66SAndroid Build Coastguard Worker
510*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the current test has a fatal failure.
511*481dde66SAndroid Build Coastguard Worker
512*481dde66SAndroid Build Coastguard Worker##### HasNonfatalFailure {#Test::HasNonfatalFailure}
513*481dde66SAndroid Build Coastguard Worker
514*481dde66SAndroid Build Coastguard Worker`static bool Test::HasNonfatalFailure()`
515*481dde66SAndroid Build Coastguard Worker
516*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the current test has a nonfatal failure.
517*481dde66SAndroid Build Coastguard Worker
518*481dde66SAndroid Build Coastguard Worker##### HasFailure {#Test::HasFailure}
519*481dde66SAndroid Build Coastguard Worker
520*481dde66SAndroid Build Coastguard Worker`static bool Test::HasFailure()`
521*481dde66SAndroid Build Coastguard Worker
522*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the current test has any failure, either fatal or
523*481dde66SAndroid Build Coastguard Workernonfatal.
524*481dde66SAndroid Build Coastguard Worker
525*481dde66SAndroid Build Coastguard Worker##### IsSkipped {#Test::IsSkipped}
526*481dde66SAndroid Build Coastguard Worker
527*481dde66SAndroid Build Coastguard Worker`static bool Test::IsSkipped()`
528*481dde66SAndroid Build Coastguard Worker
529*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the current test was skipped.
530*481dde66SAndroid Build Coastguard Worker
531*481dde66SAndroid Build Coastguard Worker##### RecordProperty {#Test::RecordProperty}
532*481dde66SAndroid Build Coastguard Worker
533*481dde66SAndroid Build Coastguard Worker`static void Test::RecordProperty(const std::string& key, const std::string&
534*481dde66SAndroid Build Coastguard Workervalue)` \
535*481dde66SAndroid Build Coastguard Worker`static void Test::RecordProperty(const std::string& key, int value)`
536*481dde66SAndroid Build Coastguard Worker
537*481dde66SAndroid Build Coastguard WorkerLogs a property for the current test, test suite, or entire invocation of the
538*481dde66SAndroid Build Coastguard Workertest program. Only the last value for a given key is logged.
539*481dde66SAndroid Build Coastguard Worker
540*481dde66SAndroid Build Coastguard WorkerThe key must be a valid XML attribute name, and cannot conflict with the ones
541*481dde66SAndroid Build Coastguard Workeralready used by GoogleTest (`name`, `file`, `line`, `status`, `time`,
542*481dde66SAndroid Build Coastguard Worker`classname`, `type_param`, and `value_param`).
543*481dde66SAndroid Build Coastguard Worker
544*481dde66SAndroid Build Coastguard Worker`RecordProperty` is `public static` so it can be called from utility functions
545*481dde66SAndroid Build Coastguard Workerthat are not members of the test fixture.
546*481dde66SAndroid Build Coastguard Worker
547*481dde66SAndroid Build Coastguard WorkerCalls to `RecordProperty` made during the lifespan of the test (from the moment
548*481dde66SAndroid Build Coastguard Workerits constructor starts to the moment its destructor finishes) are output in XML
549*481dde66SAndroid Build Coastguard Workeras attributes of the `<testcase>` element. Properties recorded from a fixture's
550*481dde66SAndroid Build Coastguard Worker`SetUpTestSuite` or `TearDownTestSuite` methods are logged as attributes of the
551*481dde66SAndroid Build Coastguard Workercorresponding `<testsuite>` element. Calls to `RecordProperty` made in the
552*481dde66SAndroid Build Coastguard Workerglobal context (before or after invocation of `RUN_ALL_TESTS` or from the
553*481dde66SAndroid Build Coastguard Worker`SetUp`/`TearDown` methods of registered `Environment` objects) are output as
554*481dde66SAndroid Build Coastguard Workerattributes of the `<testsuites>` element.
555*481dde66SAndroid Build Coastguard Worker
556*481dde66SAndroid Build Coastguard Worker#### Protected Methods {#Test-protected}
557*481dde66SAndroid Build Coastguard Worker
558*481dde66SAndroid Build Coastguard Worker##### SetUp {#Test::SetUp}
559*481dde66SAndroid Build Coastguard Worker
560*481dde66SAndroid Build Coastguard Worker`virtual void Test::SetUp()`
561*481dde66SAndroid Build Coastguard Worker
562*481dde66SAndroid Build Coastguard WorkerOverride this to perform test fixture setup. GoogleTest calls `SetUp()` before
563*481dde66SAndroid Build Coastguard Workerrunning each individual test.
564*481dde66SAndroid Build Coastguard Worker
565*481dde66SAndroid Build Coastguard Worker##### TearDown {#Test::TearDown}
566*481dde66SAndroid Build Coastguard Worker
567*481dde66SAndroid Build Coastguard Worker`virtual void Test::TearDown()`
568*481dde66SAndroid Build Coastguard Worker
569*481dde66SAndroid Build Coastguard WorkerOverride this to perform test fixture teardown. GoogleTest calls `TearDown()`
570*481dde66SAndroid Build Coastguard Workerafter running each individual test.
571*481dde66SAndroid Build Coastguard Worker
572*481dde66SAndroid Build Coastguard Worker### TestWithParam {#TestWithParam}
573*481dde66SAndroid Build Coastguard Worker
574*481dde66SAndroid Build Coastguard Worker`testing::TestWithParam<T>`
575*481dde66SAndroid Build Coastguard Worker
576*481dde66SAndroid Build Coastguard WorkerA convenience class which inherits from both [`Test`](#Test) and
577*481dde66SAndroid Build Coastguard Worker[`WithParamInterface<T>`](#WithParamInterface).
578*481dde66SAndroid Build Coastguard Worker
579*481dde66SAndroid Build Coastguard Worker### TestSuite {#TestSuite}
580*481dde66SAndroid Build Coastguard Worker
581*481dde66SAndroid Build Coastguard WorkerRepresents a test suite. `TestSuite` is not copyable.
582*481dde66SAndroid Build Coastguard Worker
583*481dde66SAndroid Build Coastguard Worker#### Public Methods {#TestSuite-public}
584*481dde66SAndroid Build Coastguard Worker
585*481dde66SAndroid Build Coastguard Worker##### name {#TestSuite::name}
586*481dde66SAndroid Build Coastguard Worker
587*481dde66SAndroid Build Coastguard Worker`const char* TestSuite::name() const`
588*481dde66SAndroid Build Coastguard Worker
589*481dde66SAndroid Build Coastguard WorkerGets the name of the test suite.
590*481dde66SAndroid Build Coastguard Worker
591*481dde66SAndroid Build Coastguard Worker##### type_param {#TestSuite::type_param}
592*481dde66SAndroid Build Coastguard Worker
593*481dde66SAndroid Build Coastguard Worker`const char* TestSuite::type_param() const`
594*481dde66SAndroid Build Coastguard Worker
595*481dde66SAndroid Build Coastguard WorkerReturns the name of the parameter type, or `NULL` if this is not a typed or
596*481dde66SAndroid Build Coastguard Workertype-parameterized test suite. See [Typed Tests](../advanced.md#typed-tests) and
597*481dde66SAndroid Build Coastguard Worker[Type-Parameterized Tests](../advanced.md#type-parameterized-tests).
598*481dde66SAndroid Build Coastguard Worker
599*481dde66SAndroid Build Coastguard Worker##### should_run {#TestSuite::should_run}
600*481dde66SAndroid Build Coastguard Worker
601*481dde66SAndroid Build Coastguard Worker`bool TestSuite::should_run() const`
602*481dde66SAndroid Build Coastguard Worker
603*481dde66SAndroid Build Coastguard WorkerReturns true if any test in this test suite should run.
604*481dde66SAndroid Build Coastguard Worker
605*481dde66SAndroid Build Coastguard Worker##### successful_test_count {#TestSuite::successful_test_count}
606*481dde66SAndroid Build Coastguard Worker
607*481dde66SAndroid Build Coastguard Worker`int TestSuite::successful_test_count() const`
608*481dde66SAndroid Build Coastguard Worker
609*481dde66SAndroid Build Coastguard WorkerGets the number of successful tests in this test suite.
610*481dde66SAndroid Build Coastguard Worker
611*481dde66SAndroid Build Coastguard Worker##### skipped_test_count {#TestSuite::skipped_test_count}
612*481dde66SAndroid Build Coastguard Worker
613*481dde66SAndroid Build Coastguard Worker`int TestSuite::skipped_test_count() const`
614*481dde66SAndroid Build Coastguard Worker
615*481dde66SAndroid Build Coastguard WorkerGets the number of skipped tests in this test suite.
616*481dde66SAndroid Build Coastguard Worker
617*481dde66SAndroid Build Coastguard Worker##### failed_test_count {#TestSuite::failed_test_count}
618*481dde66SAndroid Build Coastguard Worker
619*481dde66SAndroid Build Coastguard Worker`int TestSuite::failed_test_count() const`
620*481dde66SAndroid Build Coastguard Worker
621*481dde66SAndroid Build Coastguard WorkerGets the number of failed tests in this test suite.
622*481dde66SAndroid Build Coastguard Worker
623*481dde66SAndroid Build Coastguard Worker##### reportable_disabled_test_count {#TestSuite::reportable_disabled_test_count}
624*481dde66SAndroid Build Coastguard Worker
625*481dde66SAndroid Build Coastguard Worker`int TestSuite::reportable_disabled_test_count() const`
626*481dde66SAndroid Build Coastguard Worker
627*481dde66SAndroid Build Coastguard WorkerGets the number of disabled tests that will be reported in the XML report.
628*481dde66SAndroid Build Coastguard Worker
629*481dde66SAndroid Build Coastguard Worker##### disabled_test_count {#TestSuite::disabled_test_count}
630*481dde66SAndroid Build Coastguard Worker
631*481dde66SAndroid Build Coastguard Worker`int TestSuite::disabled_test_count() const`
632*481dde66SAndroid Build Coastguard Worker
633*481dde66SAndroid Build Coastguard WorkerGets the number of disabled tests in this test suite.
634*481dde66SAndroid Build Coastguard Worker
635*481dde66SAndroid Build Coastguard Worker##### reportable_test_count {#TestSuite::reportable_test_count}
636*481dde66SAndroid Build Coastguard Worker
637*481dde66SAndroid Build Coastguard Worker`int TestSuite::reportable_test_count() const`
638*481dde66SAndroid Build Coastguard Worker
639*481dde66SAndroid Build Coastguard WorkerGets the number of tests to be printed in the XML report.
640*481dde66SAndroid Build Coastguard Worker
641*481dde66SAndroid Build Coastguard Worker##### test_to_run_count {#TestSuite::test_to_run_count}
642*481dde66SAndroid Build Coastguard Worker
643*481dde66SAndroid Build Coastguard Worker`int TestSuite::test_to_run_count() const`
644*481dde66SAndroid Build Coastguard Worker
645*481dde66SAndroid Build Coastguard WorkerGet the number of tests in this test suite that should run.
646*481dde66SAndroid Build Coastguard Worker
647*481dde66SAndroid Build Coastguard Worker##### total_test_count {#TestSuite::total_test_count}
648*481dde66SAndroid Build Coastguard Worker
649*481dde66SAndroid Build Coastguard Worker`int TestSuite::total_test_count() const`
650*481dde66SAndroid Build Coastguard Worker
651*481dde66SAndroid Build Coastguard WorkerGets the number of all tests in this test suite.
652*481dde66SAndroid Build Coastguard Worker
653*481dde66SAndroid Build Coastguard Worker##### Passed {#TestSuite::Passed}
654*481dde66SAndroid Build Coastguard Worker
655*481dde66SAndroid Build Coastguard Worker`bool TestSuite::Passed() const`
656*481dde66SAndroid Build Coastguard Worker
657*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the test suite passed.
658*481dde66SAndroid Build Coastguard Worker
659*481dde66SAndroid Build Coastguard Worker##### Failed {#TestSuite::Failed}
660*481dde66SAndroid Build Coastguard Worker
661*481dde66SAndroid Build Coastguard Worker`bool TestSuite::Failed() const`
662*481dde66SAndroid Build Coastguard Worker
663*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the test suite failed.
664*481dde66SAndroid Build Coastguard Worker
665*481dde66SAndroid Build Coastguard Worker##### elapsed_time {#TestSuite::elapsed_time}
666*481dde66SAndroid Build Coastguard Worker
667*481dde66SAndroid Build Coastguard Worker`TimeInMillis TestSuite::elapsed_time() const`
668*481dde66SAndroid Build Coastguard Worker
669*481dde66SAndroid Build Coastguard WorkerReturns the elapsed time, in milliseconds.
670*481dde66SAndroid Build Coastguard Worker
671*481dde66SAndroid Build Coastguard Worker##### start_timestamp {#TestSuite::start_timestamp}
672*481dde66SAndroid Build Coastguard Worker
673*481dde66SAndroid Build Coastguard Worker`TimeInMillis TestSuite::start_timestamp() const`
674*481dde66SAndroid Build Coastguard Worker
675*481dde66SAndroid Build Coastguard WorkerGets the time of the test suite start, in ms from the start of the UNIX epoch.
676*481dde66SAndroid Build Coastguard Worker
677*481dde66SAndroid Build Coastguard Worker##### GetTestInfo {#TestSuite::GetTestInfo}
678*481dde66SAndroid Build Coastguard Worker
679*481dde66SAndroid Build Coastguard Worker`const TestInfo* TestSuite::GetTestInfo(int i) const`
680*481dde66SAndroid Build Coastguard Worker
681*481dde66SAndroid Build Coastguard WorkerReturns the [`TestInfo`](#TestInfo) for the `i`-th test among all the tests. `i`
682*481dde66SAndroid Build Coastguard Workercan range from 0 to `total_test_count() - 1`. If `i` is not in that range,
683*481dde66SAndroid Build Coastguard Workerreturns `NULL`.
684*481dde66SAndroid Build Coastguard Worker
685*481dde66SAndroid Build Coastguard Worker##### ad_hoc_test_result {#TestSuite::ad_hoc_test_result}
686*481dde66SAndroid Build Coastguard Worker
687*481dde66SAndroid Build Coastguard Worker`const TestResult& TestSuite::ad_hoc_test_result() const`
688*481dde66SAndroid Build Coastguard Worker
689*481dde66SAndroid Build Coastguard WorkerReturns the [`TestResult`](#TestResult) that holds test properties recorded
690*481dde66SAndroid Build Coastguard Workerduring execution of `SetUpTestSuite` and `TearDownTestSuite`.
691*481dde66SAndroid Build Coastguard Worker
692*481dde66SAndroid Build Coastguard Worker### TestInfo {#TestInfo}
693*481dde66SAndroid Build Coastguard Worker
694*481dde66SAndroid Build Coastguard Worker`testing::TestInfo`
695*481dde66SAndroid Build Coastguard Worker
696*481dde66SAndroid Build Coastguard WorkerStores information about a test.
697*481dde66SAndroid Build Coastguard Worker
698*481dde66SAndroid Build Coastguard Worker#### Public Methods {#TestInfo-public}
699*481dde66SAndroid Build Coastguard Worker
700*481dde66SAndroid Build Coastguard Worker##### test_suite_name {#TestInfo::test_suite_name}
701*481dde66SAndroid Build Coastguard Worker
702*481dde66SAndroid Build Coastguard Worker`const char* TestInfo::test_suite_name() const`
703*481dde66SAndroid Build Coastguard Worker
704*481dde66SAndroid Build Coastguard WorkerReturns the test suite name.
705*481dde66SAndroid Build Coastguard Worker
706*481dde66SAndroid Build Coastguard Worker##### name {#TestInfo::name}
707*481dde66SAndroid Build Coastguard Worker
708*481dde66SAndroid Build Coastguard Worker`const char* TestInfo::name() const`
709*481dde66SAndroid Build Coastguard Worker
710*481dde66SAndroid Build Coastguard WorkerReturns the test name.
711*481dde66SAndroid Build Coastguard Worker
712*481dde66SAndroid Build Coastguard Worker##### type_param {#TestInfo::type_param}
713*481dde66SAndroid Build Coastguard Worker
714*481dde66SAndroid Build Coastguard Worker`const char* TestInfo::type_param() const`
715*481dde66SAndroid Build Coastguard Worker
716*481dde66SAndroid Build Coastguard WorkerReturns the name of the parameter type, or `NULL` if this is not a typed or
717*481dde66SAndroid Build Coastguard Workertype-parameterized test. See [Typed Tests](../advanced.md#typed-tests) and
718*481dde66SAndroid Build Coastguard Worker[Type-Parameterized Tests](../advanced.md#type-parameterized-tests).
719*481dde66SAndroid Build Coastguard Worker
720*481dde66SAndroid Build Coastguard Worker##### value_param {#TestInfo::value_param}
721*481dde66SAndroid Build Coastguard Worker
722*481dde66SAndroid Build Coastguard Worker`const char* TestInfo::value_param() const`
723*481dde66SAndroid Build Coastguard Worker
724*481dde66SAndroid Build Coastguard WorkerReturns the text representation of the value parameter, or `NULL` if this is not
725*481dde66SAndroid Build Coastguard Workera value-parameterized test. See
726*481dde66SAndroid Build Coastguard Worker[Value-Parameterized Tests](../advanced.md#value-parameterized-tests).
727*481dde66SAndroid Build Coastguard Worker
728*481dde66SAndroid Build Coastguard Worker##### file {#TestInfo::file}
729*481dde66SAndroid Build Coastguard Worker
730*481dde66SAndroid Build Coastguard Worker`const char* TestInfo::file() const`
731*481dde66SAndroid Build Coastguard Worker
732*481dde66SAndroid Build Coastguard WorkerReturns the file name where this test is defined.
733*481dde66SAndroid Build Coastguard Worker
734*481dde66SAndroid Build Coastguard Worker##### line {#TestInfo::line}
735*481dde66SAndroid Build Coastguard Worker
736*481dde66SAndroid Build Coastguard Worker`int TestInfo::line() const`
737*481dde66SAndroid Build Coastguard Worker
738*481dde66SAndroid Build Coastguard WorkerReturns the line where this test is defined.
739*481dde66SAndroid Build Coastguard Worker
740*481dde66SAndroid Build Coastguard Worker##### is_in_another_shard {#TestInfo::is_in_another_shard}
741*481dde66SAndroid Build Coastguard Worker
742*481dde66SAndroid Build Coastguard Worker`bool TestInfo::is_in_another_shard() const`
743*481dde66SAndroid Build Coastguard Worker
744*481dde66SAndroid Build Coastguard WorkerReturns true if this test should not be run because it's in another shard.
745*481dde66SAndroid Build Coastguard Worker
746*481dde66SAndroid Build Coastguard Worker##### should_run {#TestInfo::should_run}
747*481dde66SAndroid Build Coastguard Worker
748*481dde66SAndroid Build Coastguard Worker`bool TestInfo::should_run() const`
749*481dde66SAndroid Build Coastguard Worker
750*481dde66SAndroid Build Coastguard WorkerReturns true if this test should run, that is if the test is not disabled (or it
751*481dde66SAndroid Build Coastguard Workeris disabled but the `also_run_disabled_tests` flag has been specified) and its
752*481dde66SAndroid Build Coastguard Workerfull name matches the user-specified filter.
753*481dde66SAndroid Build Coastguard Worker
754*481dde66SAndroid Build Coastguard WorkerGoogleTest allows the user to filter the tests by their full names. Only the
755*481dde66SAndroid Build Coastguard Workertests that match the filter will run. See
756*481dde66SAndroid Build Coastguard Worker[Running a Subset of the Tests](../advanced.md#running-a-subset-of-the-tests)
757*481dde66SAndroid Build Coastguard Workerfor more information.
758*481dde66SAndroid Build Coastguard Worker
759*481dde66SAndroid Build Coastguard Worker##### is_reportable {#TestInfo::is_reportable}
760*481dde66SAndroid Build Coastguard Worker
761*481dde66SAndroid Build Coastguard Worker`bool TestInfo::is_reportable() const`
762*481dde66SAndroid Build Coastguard Worker
763*481dde66SAndroid Build Coastguard WorkerReturns true if and only if this test will appear in the XML report.
764*481dde66SAndroid Build Coastguard Worker
765*481dde66SAndroid Build Coastguard Worker##### result {#TestInfo::result}
766*481dde66SAndroid Build Coastguard Worker
767*481dde66SAndroid Build Coastguard Worker`const TestResult* TestInfo::result() const`
768*481dde66SAndroid Build Coastguard Worker
769*481dde66SAndroid Build Coastguard WorkerReturns the result of the test. See [`TestResult`](#TestResult).
770*481dde66SAndroid Build Coastguard Worker
771*481dde66SAndroid Build Coastguard Worker### TestParamInfo {#TestParamInfo}
772*481dde66SAndroid Build Coastguard Worker
773*481dde66SAndroid Build Coastguard Worker`testing::TestParamInfo<T>`
774*481dde66SAndroid Build Coastguard Worker
775*481dde66SAndroid Build Coastguard WorkerDescribes a parameter to a value-parameterized test. The type `T` is the type of
776*481dde66SAndroid Build Coastguard Workerthe parameter.
777*481dde66SAndroid Build Coastguard Worker
778*481dde66SAndroid Build Coastguard WorkerContains the fields `param` and `index` which hold the value of the parameter
779*481dde66SAndroid Build Coastguard Workerand its integer index respectively.
780*481dde66SAndroid Build Coastguard Worker
781*481dde66SAndroid Build Coastguard Worker### UnitTest {#UnitTest}
782*481dde66SAndroid Build Coastguard Worker
783*481dde66SAndroid Build Coastguard Worker`testing::UnitTest`
784*481dde66SAndroid Build Coastguard Worker
785*481dde66SAndroid Build Coastguard WorkerThis class contains information about the test program.
786*481dde66SAndroid Build Coastguard Worker
787*481dde66SAndroid Build Coastguard Worker`UnitTest` is a singleton class. The only instance is created when
788*481dde66SAndroid Build Coastguard Worker`UnitTest::GetInstance()` is first called. This instance is never deleted.
789*481dde66SAndroid Build Coastguard Worker
790*481dde66SAndroid Build Coastguard Worker`UnitTest` is not copyable.
791*481dde66SAndroid Build Coastguard Worker
792*481dde66SAndroid Build Coastguard Worker#### Public Methods {#UnitTest-public}
793*481dde66SAndroid Build Coastguard Worker
794*481dde66SAndroid Build Coastguard Worker##### GetInstance {#UnitTest::GetInstance}
795*481dde66SAndroid Build Coastguard Worker
796*481dde66SAndroid Build Coastguard Worker`static UnitTest* UnitTest::GetInstance()`
797*481dde66SAndroid Build Coastguard Worker
798*481dde66SAndroid Build Coastguard WorkerGets the singleton `UnitTest` object. The first time this method is called, a
799*481dde66SAndroid Build Coastguard Worker`UnitTest` object is constructed and returned. Consecutive calls will return the
800*481dde66SAndroid Build Coastguard Workersame object.
801*481dde66SAndroid Build Coastguard Worker
802*481dde66SAndroid Build Coastguard Worker##### original_working_dir {#UnitTest::original_working_dir}
803*481dde66SAndroid Build Coastguard Worker
804*481dde66SAndroid Build Coastguard Worker`const char* UnitTest::original_working_dir() const`
805*481dde66SAndroid Build Coastguard Worker
806*481dde66SAndroid Build Coastguard WorkerReturns the working directory when the first [`TEST()`](#TEST) or
807*481dde66SAndroid Build Coastguard Worker[`TEST_F()`](#TEST_F) was executed. The `UnitTest` object owns the string.
808*481dde66SAndroid Build Coastguard Worker
809*481dde66SAndroid Build Coastguard Worker##### current_test_suite {#UnitTest::current_test_suite}
810*481dde66SAndroid Build Coastguard Worker
811*481dde66SAndroid Build Coastguard Worker`const TestSuite* UnitTest::current_test_suite() const`
812*481dde66SAndroid Build Coastguard Worker
813*481dde66SAndroid Build Coastguard WorkerReturns the [`TestSuite`](#TestSuite) object for the test that's currently
814*481dde66SAndroid Build Coastguard Workerrunning, or `NULL` if no test is running.
815*481dde66SAndroid Build Coastguard Worker
816*481dde66SAndroid Build Coastguard Worker##### current_test_info {#UnitTest::current_test_info}
817*481dde66SAndroid Build Coastguard Worker
818*481dde66SAndroid Build Coastguard Worker`const TestInfo* UnitTest::current_test_info() const`
819*481dde66SAndroid Build Coastguard Worker
820*481dde66SAndroid Build Coastguard WorkerReturns the [`TestInfo`](#TestInfo) object for the test that's currently
821*481dde66SAndroid Build Coastguard Workerrunning, or `NULL` if no test is running.
822*481dde66SAndroid Build Coastguard Worker
823*481dde66SAndroid Build Coastguard Worker##### random_seed {#UnitTest::random_seed}
824*481dde66SAndroid Build Coastguard Worker
825*481dde66SAndroid Build Coastguard Worker`int UnitTest::random_seed() const`
826*481dde66SAndroid Build Coastguard Worker
827*481dde66SAndroid Build Coastguard WorkerReturns the random seed used at the start of the current test run.
828*481dde66SAndroid Build Coastguard Worker
829*481dde66SAndroid Build Coastguard Worker##### successful_test_suite_count {#UnitTest::successful_test_suite_count}
830*481dde66SAndroid Build Coastguard Worker
831*481dde66SAndroid Build Coastguard Worker`int UnitTest::successful_test_suite_count() const`
832*481dde66SAndroid Build Coastguard Worker
833*481dde66SAndroid Build Coastguard WorkerGets the number of successful test suites.
834*481dde66SAndroid Build Coastguard Worker
835*481dde66SAndroid Build Coastguard Worker##### failed_test_suite_count {#UnitTest::failed_test_suite_count}
836*481dde66SAndroid Build Coastguard Worker
837*481dde66SAndroid Build Coastguard Worker`int UnitTest::failed_test_suite_count() const`
838*481dde66SAndroid Build Coastguard Worker
839*481dde66SAndroid Build Coastguard WorkerGets the number of failed test suites.
840*481dde66SAndroid Build Coastguard Worker
841*481dde66SAndroid Build Coastguard Worker##### total_test_suite_count {#UnitTest::total_test_suite_count}
842*481dde66SAndroid Build Coastguard Worker
843*481dde66SAndroid Build Coastguard Worker`int UnitTest::total_test_suite_count() const`
844*481dde66SAndroid Build Coastguard Worker
845*481dde66SAndroid Build Coastguard WorkerGets the number of all test suites.
846*481dde66SAndroid Build Coastguard Worker
847*481dde66SAndroid Build Coastguard Worker##### test_suite_to_run_count {#UnitTest::test_suite_to_run_count}
848*481dde66SAndroid Build Coastguard Worker
849*481dde66SAndroid Build Coastguard Worker`int UnitTest::test_suite_to_run_count() const`
850*481dde66SAndroid Build Coastguard Worker
851*481dde66SAndroid Build Coastguard WorkerGets the number of all test suites that contain at least one test that should
852*481dde66SAndroid Build Coastguard Workerrun.
853*481dde66SAndroid Build Coastguard Worker
854*481dde66SAndroid Build Coastguard Worker##### successful_test_count {#UnitTest::successful_test_count}
855*481dde66SAndroid Build Coastguard Worker
856*481dde66SAndroid Build Coastguard Worker`int UnitTest::successful_test_count() const`
857*481dde66SAndroid Build Coastguard Worker
858*481dde66SAndroid Build Coastguard WorkerGets the number of successful tests.
859*481dde66SAndroid Build Coastguard Worker
860*481dde66SAndroid Build Coastguard Worker##### skipped_test_count {#UnitTest::skipped_test_count}
861*481dde66SAndroid Build Coastguard Worker
862*481dde66SAndroid Build Coastguard Worker`int UnitTest::skipped_test_count() const`
863*481dde66SAndroid Build Coastguard Worker
864*481dde66SAndroid Build Coastguard WorkerGets the number of skipped tests.
865*481dde66SAndroid Build Coastguard Worker
866*481dde66SAndroid Build Coastguard Worker##### failed_test_count {#UnitTest::failed_test_count}
867*481dde66SAndroid Build Coastguard Worker
868*481dde66SAndroid Build Coastguard Worker`int UnitTest::failed_test_count() const`
869*481dde66SAndroid Build Coastguard Worker
870*481dde66SAndroid Build Coastguard WorkerGets the number of failed tests.
871*481dde66SAndroid Build Coastguard Worker
872*481dde66SAndroid Build Coastguard Worker##### reportable_disabled_test_count {#UnitTest::reportable_disabled_test_count}
873*481dde66SAndroid Build Coastguard Worker
874*481dde66SAndroid Build Coastguard Worker`int UnitTest::reportable_disabled_test_count() const`
875*481dde66SAndroid Build Coastguard Worker
876*481dde66SAndroid Build Coastguard WorkerGets the number of disabled tests that will be reported in the XML report.
877*481dde66SAndroid Build Coastguard Worker
878*481dde66SAndroid Build Coastguard Worker##### disabled_test_count {#UnitTest::disabled_test_count}
879*481dde66SAndroid Build Coastguard Worker
880*481dde66SAndroid Build Coastguard Worker`int UnitTest::disabled_test_count() const`
881*481dde66SAndroid Build Coastguard Worker
882*481dde66SAndroid Build Coastguard WorkerGets the number of disabled tests.
883*481dde66SAndroid Build Coastguard Worker
884*481dde66SAndroid Build Coastguard Worker##### reportable_test_count {#UnitTest::reportable_test_count}
885*481dde66SAndroid Build Coastguard Worker
886*481dde66SAndroid Build Coastguard Worker`int UnitTest::reportable_test_count() const`
887*481dde66SAndroid Build Coastguard Worker
888*481dde66SAndroid Build Coastguard WorkerGets the number of tests to be printed in the XML report.
889*481dde66SAndroid Build Coastguard Worker
890*481dde66SAndroid Build Coastguard Worker##### total_test_count {#UnitTest::total_test_count}
891*481dde66SAndroid Build Coastguard Worker
892*481dde66SAndroid Build Coastguard Worker`int UnitTest::total_test_count() const`
893*481dde66SAndroid Build Coastguard Worker
894*481dde66SAndroid Build Coastguard WorkerGets the number of all tests.
895*481dde66SAndroid Build Coastguard Worker
896*481dde66SAndroid Build Coastguard Worker##### test_to_run_count {#UnitTest::test_to_run_count}
897*481dde66SAndroid Build Coastguard Worker
898*481dde66SAndroid Build Coastguard Worker`int UnitTest::test_to_run_count() const`
899*481dde66SAndroid Build Coastguard Worker
900*481dde66SAndroid Build Coastguard WorkerGets the number of tests that should run.
901*481dde66SAndroid Build Coastguard Worker
902*481dde66SAndroid Build Coastguard Worker##### start_timestamp {#UnitTest::start_timestamp}
903*481dde66SAndroid Build Coastguard Worker
904*481dde66SAndroid Build Coastguard Worker`TimeInMillis UnitTest::start_timestamp() const`
905*481dde66SAndroid Build Coastguard Worker
906*481dde66SAndroid Build Coastguard WorkerGets the time of the test program start, in ms from the start of the UNIX epoch.
907*481dde66SAndroid Build Coastguard Worker
908*481dde66SAndroid Build Coastguard Worker##### elapsed_time {#UnitTest::elapsed_time}
909*481dde66SAndroid Build Coastguard Worker
910*481dde66SAndroid Build Coastguard Worker`TimeInMillis UnitTest::elapsed_time() const`
911*481dde66SAndroid Build Coastguard Worker
912*481dde66SAndroid Build Coastguard WorkerGets the elapsed time, in milliseconds.
913*481dde66SAndroid Build Coastguard Worker
914*481dde66SAndroid Build Coastguard Worker##### Passed {#UnitTest::Passed}
915*481dde66SAndroid Build Coastguard Worker
916*481dde66SAndroid Build Coastguard Worker`bool UnitTest::Passed() const`
917*481dde66SAndroid Build Coastguard Worker
918*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the unit test passed (i.e. all test suites passed).
919*481dde66SAndroid Build Coastguard Worker
920*481dde66SAndroid Build Coastguard Worker##### Failed {#UnitTest::Failed}
921*481dde66SAndroid Build Coastguard Worker
922*481dde66SAndroid Build Coastguard Worker`bool UnitTest::Failed() const`
923*481dde66SAndroid Build Coastguard Worker
924*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the unit test failed (i.e. some test suite failed or
925*481dde66SAndroid Build Coastguard Workersomething outside of all tests failed).
926*481dde66SAndroid Build Coastguard Worker
927*481dde66SAndroid Build Coastguard Worker##### GetTestSuite {#UnitTest::GetTestSuite}
928*481dde66SAndroid Build Coastguard Worker
929*481dde66SAndroid Build Coastguard Worker`const TestSuite* UnitTest::GetTestSuite(int i) const`
930*481dde66SAndroid Build Coastguard Worker
931*481dde66SAndroid Build Coastguard WorkerGets the [`TestSuite`](#TestSuite) object for the `i`-th test suite among all
932*481dde66SAndroid Build Coastguard Workerthe test suites. `i` can range from 0 to `total_test_suite_count() - 1`. If `i`
933*481dde66SAndroid Build Coastguard Workeris not in that range, returns `NULL`.
934*481dde66SAndroid Build Coastguard Worker
935*481dde66SAndroid Build Coastguard Worker##### ad_hoc_test_result {#UnitTest::ad_hoc_test_result}
936*481dde66SAndroid Build Coastguard Worker
937*481dde66SAndroid Build Coastguard Worker`const TestResult& UnitTest::ad_hoc_test_result() const`
938*481dde66SAndroid Build Coastguard Worker
939*481dde66SAndroid Build Coastguard WorkerReturns the [`TestResult`](#TestResult) containing information on test failures
940*481dde66SAndroid Build Coastguard Workerand properties logged outside of individual test suites.
941*481dde66SAndroid Build Coastguard Worker
942*481dde66SAndroid Build Coastguard Worker##### listeners {#UnitTest::listeners}
943*481dde66SAndroid Build Coastguard Worker
944*481dde66SAndroid Build Coastguard Worker`TestEventListeners& UnitTest::listeners()`
945*481dde66SAndroid Build Coastguard Worker
946*481dde66SAndroid Build Coastguard WorkerReturns the list of event listeners that can be used to track events inside
947*481dde66SAndroid Build Coastguard WorkerGoogleTest. See [`TestEventListeners`](#TestEventListeners).
948*481dde66SAndroid Build Coastguard Worker
949*481dde66SAndroid Build Coastguard Worker### TestEventListener {#TestEventListener}
950*481dde66SAndroid Build Coastguard Worker
951*481dde66SAndroid Build Coastguard Worker`testing::TestEventListener`
952*481dde66SAndroid Build Coastguard Worker
953*481dde66SAndroid Build Coastguard WorkerThe interface for tracing execution of tests. The methods below are listed in
954*481dde66SAndroid Build Coastguard Workerthe order the corresponding events are fired.
955*481dde66SAndroid Build Coastguard Worker
956*481dde66SAndroid Build Coastguard Worker#### Public Methods {#TestEventListener-public}
957*481dde66SAndroid Build Coastguard Worker
958*481dde66SAndroid Build Coastguard Worker##### OnTestProgramStart {#TestEventListener::OnTestProgramStart}
959*481dde66SAndroid Build Coastguard Worker
960*481dde66SAndroid Build Coastguard Worker`virtual void TestEventListener::OnTestProgramStart(const UnitTest& unit_test)`
961*481dde66SAndroid Build Coastguard Worker
962*481dde66SAndroid Build Coastguard WorkerFired before any test activity starts.
963*481dde66SAndroid Build Coastguard Worker
964*481dde66SAndroid Build Coastguard Worker##### OnTestIterationStart {#TestEventListener::OnTestIterationStart}
965*481dde66SAndroid Build Coastguard Worker
966*481dde66SAndroid Build Coastguard Worker`virtual void TestEventListener::OnTestIterationStart(const UnitTest& unit_test,
967*481dde66SAndroid Build Coastguard Workerint iteration)`
968*481dde66SAndroid Build Coastguard Worker
969*481dde66SAndroid Build Coastguard WorkerFired before each iteration of tests starts. There may be more than one
970*481dde66SAndroid Build Coastguard Workeriteration if `GTEST_FLAG(repeat)` is set. `iteration` is the iteration index,
971*481dde66SAndroid Build Coastguard Workerstarting from 0.
972*481dde66SAndroid Build Coastguard Worker
973*481dde66SAndroid Build Coastguard Worker##### OnEnvironmentsSetUpStart {#TestEventListener::OnEnvironmentsSetUpStart}
974*481dde66SAndroid Build Coastguard Worker
975*481dde66SAndroid Build Coastguard Worker`virtual void TestEventListener::OnEnvironmentsSetUpStart(const UnitTest&
976*481dde66SAndroid Build Coastguard Workerunit_test)`
977*481dde66SAndroid Build Coastguard Worker
978*481dde66SAndroid Build Coastguard WorkerFired before environment set-up for each iteration of tests starts.
979*481dde66SAndroid Build Coastguard Worker
980*481dde66SAndroid Build Coastguard Worker##### OnEnvironmentsSetUpEnd {#TestEventListener::OnEnvironmentsSetUpEnd}
981*481dde66SAndroid Build Coastguard Worker
982*481dde66SAndroid Build Coastguard Worker`virtual void TestEventListener::OnEnvironmentsSetUpEnd(const UnitTest&
983*481dde66SAndroid Build Coastguard Workerunit_test)`
984*481dde66SAndroid Build Coastguard Worker
985*481dde66SAndroid Build Coastguard WorkerFired after environment set-up for each iteration of tests ends.
986*481dde66SAndroid Build Coastguard Worker
987*481dde66SAndroid Build Coastguard Worker##### OnTestSuiteStart {#TestEventListener::OnTestSuiteStart}
988*481dde66SAndroid Build Coastguard Worker
989*481dde66SAndroid Build Coastguard Worker`virtual void TestEventListener::OnTestSuiteStart(const TestSuite& test_suite)`
990*481dde66SAndroid Build Coastguard Worker
991*481dde66SAndroid Build Coastguard WorkerFired before the test suite starts.
992*481dde66SAndroid Build Coastguard Worker
993*481dde66SAndroid Build Coastguard Worker##### OnTestStart {#TestEventListener::OnTestStart}
994*481dde66SAndroid Build Coastguard Worker
995*481dde66SAndroid Build Coastguard Worker`virtual void TestEventListener::OnTestStart(const TestInfo& test_info)`
996*481dde66SAndroid Build Coastguard Worker
997*481dde66SAndroid Build Coastguard WorkerFired before the test starts.
998*481dde66SAndroid Build Coastguard Worker
999*481dde66SAndroid Build Coastguard Worker##### OnTestPartResult {#TestEventListener::OnTestPartResult}
1000*481dde66SAndroid Build Coastguard Worker
1001*481dde66SAndroid Build Coastguard Worker`virtual void TestEventListener::OnTestPartResult(const TestPartResult&
1002*481dde66SAndroid Build Coastguard Workertest_part_result)`
1003*481dde66SAndroid Build Coastguard Worker
1004*481dde66SAndroid Build Coastguard WorkerFired after a failed assertion or a `SUCCEED()` invocation. If you want to throw
1005*481dde66SAndroid Build Coastguard Workeran exception from this function to skip to the next test, it must be an
1006*481dde66SAndroid Build Coastguard Worker[`AssertionException`](#AssertionException) or inherited from it.
1007*481dde66SAndroid Build Coastguard Worker
1008*481dde66SAndroid Build Coastguard Worker##### OnTestEnd {#TestEventListener::OnTestEnd}
1009*481dde66SAndroid Build Coastguard Worker
1010*481dde66SAndroid Build Coastguard Worker`virtual void TestEventListener::OnTestEnd(const TestInfo& test_info)`
1011*481dde66SAndroid Build Coastguard Worker
1012*481dde66SAndroid Build Coastguard WorkerFired after the test ends.
1013*481dde66SAndroid Build Coastguard Worker
1014*481dde66SAndroid Build Coastguard Worker##### OnTestSuiteEnd {#TestEventListener::OnTestSuiteEnd}
1015*481dde66SAndroid Build Coastguard Worker
1016*481dde66SAndroid Build Coastguard Worker`virtual void TestEventListener::OnTestSuiteEnd(const TestSuite& test_suite)`
1017*481dde66SAndroid Build Coastguard Worker
1018*481dde66SAndroid Build Coastguard WorkerFired after the test suite ends.
1019*481dde66SAndroid Build Coastguard Worker
1020*481dde66SAndroid Build Coastguard Worker##### OnEnvironmentsTearDownStart {#TestEventListener::OnEnvironmentsTearDownStart}
1021*481dde66SAndroid Build Coastguard Worker
1022*481dde66SAndroid Build Coastguard Worker`virtual void TestEventListener::OnEnvironmentsTearDownStart(const UnitTest&
1023*481dde66SAndroid Build Coastguard Workerunit_test)`
1024*481dde66SAndroid Build Coastguard Worker
1025*481dde66SAndroid Build Coastguard WorkerFired before environment tear-down for each iteration of tests starts.
1026*481dde66SAndroid Build Coastguard Worker
1027*481dde66SAndroid Build Coastguard Worker##### OnEnvironmentsTearDownEnd {#TestEventListener::OnEnvironmentsTearDownEnd}
1028*481dde66SAndroid Build Coastguard Worker
1029*481dde66SAndroid Build Coastguard Worker`virtual void TestEventListener::OnEnvironmentsTearDownEnd(const UnitTest&
1030*481dde66SAndroid Build Coastguard Workerunit_test)`
1031*481dde66SAndroid Build Coastguard Worker
1032*481dde66SAndroid Build Coastguard WorkerFired after environment tear-down for each iteration of tests ends.
1033*481dde66SAndroid Build Coastguard Worker
1034*481dde66SAndroid Build Coastguard Worker##### OnTestIterationEnd {#TestEventListener::OnTestIterationEnd}
1035*481dde66SAndroid Build Coastguard Worker
1036*481dde66SAndroid Build Coastguard Worker`virtual void TestEventListener::OnTestIterationEnd(const UnitTest& unit_test,
1037*481dde66SAndroid Build Coastguard Workerint iteration)`
1038*481dde66SAndroid Build Coastguard Worker
1039*481dde66SAndroid Build Coastguard WorkerFired after each iteration of tests finishes.
1040*481dde66SAndroid Build Coastguard Worker
1041*481dde66SAndroid Build Coastguard Worker##### OnTestProgramEnd {#TestEventListener::OnTestProgramEnd}
1042*481dde66SAndroid Build Coastguard Worker
1043*481dde66SAndroid Build Coastguard Worker`virtual void TestEventListener::OnTestProgramEnd(const UnitTest& unit_test)`
1044*481dde66SAndroid Build Coastguard Worker
1045*481dde66SAndroid Build Coastguard WorkerFired after all test activities have ended.
1046*481dde66SAndroid Build Coastguard Worker
1047*481dde66SAndroid Build Coastguard Worker### TestEventListeners {#TestEventListeners}
1048*481dde66SAndroid Build Coastguard Worker
1049*481dde66SAndroid Build Coastguard Worker`testing::TestEventListeners`
1050*481dde66SAndroid Build Coastguard Worker
1051*481dde66SAndroid Build Coastguard WorkerLets users add listeners to track events in GoogleTest.
1052*481dde66SAndroid Build Coastguard Worker
1053*481dde66SAndroid Build Coastguard Worker#### Public Methods {#TestEventListeners-public}
1054*481dde66SAndroid Build Coastguard Worker
1055*481dde66SAndroid Build Coastguard Worker##### Append {#TestEventListeners::Append}
1056*481dde66SAndroid Build Coastguard Worker
1057*481dde66SAndroid Build Coastguard Worker`void TestEventListeners::Append(TestEventListener* listener)`
1058*481dde66SAndroid Build Coastguard Worker
1059*481dde66SAndroid Build Coastguard WorkerAppends an event listener to the end of the list. GoogleTest assumes ownership
1060*481dde66SAndroid Build Coastguard Workerof the listener (i.e. it will delete the listener when the test program
1061*481dde66SAndroid Build Coastguard Workerfinishes).
1062*481dde66SAndroid Build Coastguard Worker
1063*481dde66SAndroid Build Coastguard Worker##### Release {#TestEventListeners::Release}
1064*481dde66SAndroid Build Coastguard Worker
1065*481dde66SAndroid Build Coastguard Worker`TestEventListener* TestEventListeners::Release(TestEventListener* listener)`
1066*481dde66SAndroid Build Coastguard Worker
1067*481dde66SAndroid Build Coastguard WorkerRemoves the given event listener from the list and returns it. It then becomes
1068*481dde66SAndroid Build Coastguard Workerthe caller's responsibility to delete the listener. Returns `NULL` if the
1069*481dde66SAndroid Build Coastguard Workerlistener is not found in the list.
1070*481dde66SAndroid Build Coastguard Worker
1071*481dde66SAndroid Build Coastguard Worker##### default_result_printer {#TestEventListeners::default_result_printer}
1072*481dde66SAndroid Build Coastguard Worker
1073*481dde66SAndroid Build Coastguard Worker`TestEventListener* TestEventListeners::default_result_printer() const`
1074*481dde66SAndroid Build Coastguard Worker
1075*481dde66SAndroid Build Coastguard WorkerReturns the standard listener responsible for the default console output. Can be
1076*481dde66SAndroid Build Coastguard Workerremoved from the listeners list to shut down default console output. Note that
1077*481dde66SAndroid Build Coastguard Workerremoving this object from the listener list with
1078*481dde66SAndroid Build Coastguard Worker[`Release()`](#TestEventListeners::Release) transfers its ownership to the
1079*481dde66SAndroid Build Coastguard Workercaller and makes this function return `NULL` the next time.
1080*481dde66SAndroid Build Coastguard Worker
1081*481dde66SAndroid Build Coastguard Worker##### default_xml_generator {#TestEventListeners::default_xml_generator}
1082*481dde66SAndroid Build Coastguard Worker
1083*481dde66SAndroid Build Coastguard Worker`TestEventListener* TestEventListeners::default_xml_generator() const`
1084*481dde66SAndroid Build Coastguard Worker
1085*481dde66SAndroid Build Coastguard WorkerReturns the standard listener responsible for the default XML output controlled
1086*481dde66SAndroid Build Coastguard Workerby the `--gtest_output=xml` flag. Can be removed from the listeners list by
1087*481dde66SAndroid Build Coastguard Workerusers who want to shut down the default XML output controlled by this flag and
1088*481dde66SAndroid Build Coastguard Workersubstitute it with custom one. Note that removing this object from the listener
1089*481dde66SAndroid Build Coastguard Workerlist with [`Release()`](#TestEventListeners::Release) transfers its ownership to
1090*481dde66SAndroid Build Coastguard Workerthe caller and makes this function return `NULL` the next time.
1091*481dde66SAndroid Build Coastguard Worker
1092*481dde66SAndroid Build Coastguard Worker### TestPartResult {#TestPartResult}
1093*481dde66SAndroid Build Coastguard Worker
1094*481dde66SAndroid Build Coastguard Worker`testing::TestPartResult`
1095*481dde66SAndroid Build Coastguard Worker
1096*481dde66SAndroid Build Coastguard WorkerA copyable object representing the result of a test part (i.e. an assertion or
1097*481dde66SAndroid Build Coastguard Workeran explicit `FAIL()`, `ADD_FAILURE()`, or `SUCCESS()`).
1098*481dde66SAndroid Build Coastguard Worker
1099*481dde66SAndroid Build Coastguard Worker#### Public Methods {#TestPartResult-public}
1100*481dde66SAndroid Build Coastguard Worker
1101*481dde66SAndroid Build Coastguard Worker##### type {#TestPartResult::type}
1102*481dde66SAndroid Build Coastguard Worker
1103*481dde66SAndroid Build Coastguard Worker`Type TestPartResult::type() const`
1104*481dde66SAndroid Build Coastguard Worker
1105*481dde66SAndroid Build Coastguard WorkerGets the outcome of the test part.
1106*481dde66SAndroid Build Coastguard Worker
1107*481dde66SAndroid Build Coastguard WorkerThe return type `Type` is an enum defined as follows:
1108*481dde66SAndroid Build Coastguard Worker
1109*481dde66SAndroid Build Coastguard Worker```cpp
1110*481dde66SAndroid Build Coastguard Workerenum Type {
1111*481dde66SAndroid Build Coastguard Worker  kSuccess,          // Succeeded.
1112*481dde66SAndroid Build Coastguard Worker  kNonFatalFailure,  // Failed but the test can continue.
1113*481dde66SAndroid Build Coastguard Worker  kFatalFailure,     // Failed and the test should be terminated.
1114*481dde66SAndroid Build Coastguard Worker  kSkip              // Skipped.
1115*481dde66SAndroid Build Coastguard Worker};
1116*481dde66SAndroid Build Coastguard Worker```
1117*481dde66SAndroid Build Coastguard Worker
1118*481dde66SAndroid Build Coastguard Worker##### file_name {#TestPartResult::file_name}
1119*481dde66SAndroid Build Coastguard Worker
1120*481dde66SAndroid Build Coastguard Worker`const char* TestPartResult::file_name() const`
1121*481dde66SAndroid Build Coastguard Worker
1122*481dde66SAndroid Build Coastguard WorkerGets the name of the source file where the test part took place, or `NULL` if
1123*481dde66SAndroid Build Coastguard Workerit's unknown.
1124*481dde66SAndroid Build Coastguard Worker
1125*481dde66SAndroid Build Coastguard Worker##### line_number {#TestPartResult::line_number}
1126*481dde66SAndroid Build Coastguard Worker
1127*481dde66SAndroid Build Coastguard Worker`int TestPartResult::line_number() const`
1128*481dde66SAndroid Build Coastguard Worker
1129*481dde66SAndroid Build Coastguard WorkerGets the line in the source file where the test part took place, or `-1` if it's
1130*481dde66SAndroid Build Coastguard Workerunknown.
1131*481dde66SAndroid Build Coastguard Worker
1132*481dde66SAndroid Build Coastguard Worker##### summary {#TestPartResult::summary}
1133*481dde66SAndroid Build Coastguard Worker
1134*481dde66SAndroid Build Coastguard Worker`const char* TestPartResult::summary() const`
1135*481dde66SAndroid Build Coastguard Worker
1136*481dde66SAndroid Build Coastguard WorkerGets the summary of the failure message.
1137*481dde66SAndroid Build Coastguard Worker
1138*481dde66SAndroid Build Coastguard Worker##### message {#TestPartResult::message}
1139*481dde66SAndroid Build Coastguard Worker
1140*481dde66SAndroid Build Coastguard Worker`const char* TestPartResult::message() const`
1141*481dde66SAndroid Build Coastguard Worker
1142*481dde66SAndroid Build Coastguard WorkerGets the message associated with the test part.
1143*481dde66SAndroid Build Coastguard Worker
1144*481dde66SAndroid Build Coastguard Worker##### skipped {#TestPartResult::skipped}
1145*481dde66SAndroid Build Coastguard Worker
1146*481dde66SAndroid Build Coastguard Worker`bool TestPartResult::skipped() const`
1147*481dde66SAndroid Build Coastguard Worker
1148*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the test part was skipped.
1149*481dde66SAndroid Build Coastguard Worker
1150*481dde66SAndroid Build Coastguard Worker##### passed {#TestPartResult::passed}
1151*481dde66SAndroid Build Coastguard Worker
1152*481dde66SAndroid Build Coastguard Worker`bool TestPartResult::passed() const`
1153*481dde66SAndroid Build Coastguard Worker
1154*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the test part passed.
1155*481dde66SAndroid Build Coastguard Worker
1156*481dde66SAndroid Build Coastguard Worker##### nonfatally_failed {#TestPartResult::nonfatally_failed}
1157*481dde66SAndroid Build Coastguard Worker
1158*481dde66SAndroid Build Coastguard Worker`bool TestPartResult::nonfatally_failed() const`
1159*481dde66SAndroid Build Coastguard Worker
1160*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the test part non-fatally failed.
1161*481dde66SAndroid Build Coastguard Worker
1162*481dde66SAndroid Build Coastguard Worker##### fatally_failed {#TestPartResult::fatally_failed}
1163*481dde66SAndroid Build Coastguard Worker
1164*481dde66SAndroid Build Coastguard Worker`bool TestPartResult::fatally_failed() const`
1165*481dde66SAndroid Build Coastguard Worker
1166*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the test part fatally failed.
1167*481dde66SAndroid Build Coastguard Worker
1168*481dde66SAndroid Build Coastguard Worker##### failed {#TestPartResult::failed}
1169*481dde66SAndroid Build Coastguard Worker
1170*481dde66SAndroid Build Coastguard Worker`bool TestPartResult::failed() const`
1171*481dde66SAndroid Build Coastguard Worker
1172*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the test part failed.
1173*481dde66SAndroid Build Coastguard Worker
1174*481dde66SAndroid Build Coastguard Worker### TestProperty {#TestProperty}
1175*481dde66SAndroid Build Coastguard Worker
1176*481dde66SAndroid Build Coastguard Worker`testing::TestProperty`
1177*481dde66SAndroid Build Coastguard Worker
1178*481dde66SAndroid Build Coastguard WorkerA copyable object representing a user-specified test property which can be
1179*481dde66SAndroid Build Coastguard Workeroutput as a key/value string pair.
1180*481dde66SAndroid Build Coastguard Worker
1181*481dde66SAndroid Build Coastguard Worker#### Public Methods {#TestProperty-public}
1182*481dde66SAndroid Build Coastguard Worker
1183*481dde66SAndroid Build Coastguard Worker##### key {#key}
1184*481dde66SAndroid Build Coastguard Worker
1185*481dde66SAndroid Build Coastguard Worker`const char* key() const`
1186*481dde66SAndroid Build Coastguard Worker
1187*481dde66SAndroid Build Coastguard WorkerGets the user-supplied key.
1188*481dde66SAndroid Build Coastguard Worker
1189*481dde66SAndroid Build Coastguard Worker##### value {#value}
1190*481dde66SAndroid Build Coastguard Worker
1191*481dde66SAndroid Build Coastguard Worker`const char* value() const`
1192*481dde66SAndroid Build Coastguard Worker
1193*481dde66SAndroid Build Coastguard WorkerGets the user-supplied value.
1194*481dde66SAndroid Build Coastguard Worker
1195*481dde66SAndroid Build Coastguard Worker##### SetValue {#SetValue}
1196*481dde66SAndroid Build Coastguard Worker
1197*481dde66SAndroid Build Coastguard Worker`void SetValue(const std::string& new_value)`
1198*481dde66SAndroid Build Coastguard Worker
1199*481dde66SAndroid Build Coastguard WorkerSets a new value, overriding the previous one.
1200*481dde66SAndroid Build Coastguard Worker
1201*481dde66SAndroid Build Coastguard Worker### TestResult {#TestResult}
1202*481dde66SAndroid Build Coastguard Worker
1203*481dde66SAndroid Build Coastguard Worker`testing::TestResult`
1204*481dde66SAndroid Build Coastguard Worker
1205*481dde66SAndroid Build Coastguard WorkerContains information about the result of a single test.
1206*481dde66SAndroid Build Coastguard Worker
1207*481dde66SAndroid Build Coastguard Worker`TestResult` is not copyable.
1208*481dde66SAndroid Build Coastguard Worker
1209*481dde66SAndroid Build Coastguard Worker#### Public Methods {#TestResult-public}
1210*481dde66SAndroid Build Coastguard Worker
1211*481dde66SAndroid Build Coastguard Worker##### total_part_count {#TestResult::total_part_count}
1212*481dde66SAndroid Build Coastguard Worker
1213*481dde66SAndroid Build Coastguard Worker`int TestResult::total_part_count() const`
1214*481dde66SAndroid Build Coastguard Worker
1215*481dde66SAndroid Build Coastguard WorkerGets the number of all test parts. This is the sum of the number of successful
1216*481dde66SAndroid Build Coastguard Workertest parts and the number of failed test parts.
1217*481dde66SAndroid Build Coastguard Worker
1218*481dde66SAndroid Build Coastguard Worker##### test_property_count {#TestResult::test_property_count}
1219*481dde66SAndroid Build Coastguard Worker
1220*481dde66SAndroid Build Coastguard Worker`int TestResult::test_property_count() const`
1221*481dde66SAndroid Build Coastguard Worker
1222*481dde66SAndroid Build Coastguard WorkerReturns the number of test properties.
1223*481dde66SAndroid Build Coastguard Worker
1224*481dde66SAndroid Build Coastguard Worker##### Passed {#TestResult::Passed}
1225*481dde66SAndroid Build Coastguard Worker
1226*481dde66SAndroid Build Coastguard Worker`bool TestResult::Passed() const`
1227*481dde66SAndroid Build Coastguard Worker
1228*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the test passed (i.e. no test part failed).
1229*481dde66SAndroid Build Coastguard Worker
1230*481dde66SAndroid Build Coastguard Worker##### Skipped {#TestResult::Skipped}
1231*481dde66SAndroid Build Coastguard Worker
1232*481dde66SAndroid Build Coastguard Worker`bool TestResult::Skipped() const`
1233*481dde66SAndroid Build Coastguard Worker
1234*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the test was skipped.
1235*481dde66SAndroid Build Coastguard Worker
1236*481dde66SAndroid Build Coastguard Worker##### Failed {#TestResult::Failed}
1237*481dde66SAndroid Build Coastguard Worker
1238*481dde66SAndroid Build Coastguard Worker`bool TestResult::Failed() const`
1239*481dde66SAndroid Build Coastguard Worker
1240*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the test failed.
1241*481dde66SAndroid Build Coastguard Worker
1242*481dde66SAndroid Build Coastguard Worker##### HasFatalFailure {#TestResult::HasFatalFailure}
1243*481dde66SAndroid Build Coastguard Worker
1244*481dde66SAndroid Build Coastguard Worker`bool TestResult::HasFatalFailure() const`
1245*481dde66SAndroid Build Coastguard Worker
1246*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the test fatally failed.
1247*481dde66SAndroid Build Coastguard Worker
1248*481dde66SAndroid Build Coastguard Worker##### HasNonfatalFailure {#TestResult::HasNonfatalFailure}
1249*481dde66SAndroid Build Coastguard Worker
1250*481dde66SAndroid Build Coastguard Worker`bool TestResult::HasNonfatalFailure() const`
1251*481dde66SAndroid Build Coastguard Worker
1252*481dde66SAndroid Build Coastguard WorkerReturns true if and only if the test has a non-fatal failure.
1253*481dde66SAndroid Build Coastguard Worker
1254*481dde66SAndroid Build Coastguard Worker##### elapsed_time {#TestResult::elapsed_time}
1255*481dde66SAndroid Build Coastguard Worker
1256*481dde66SAndroid Build Coastguard Worker`TimeInMillis TestResult::elapsed_time() const`
1257*481dde66SAndroid Build Coastguard Worker
1258*481dde66SAndroid Build Coastguard WorkerReturns the elapsed time, in milliseconds.
1259*481dde66SAndroid Build Coastguard Worker
1260*481dde66SAndroid Build Coastguard Worker##### start_timestamp {#TestResult::start_timestamp}
1261*481dde66SAndroid Build Coastguard Worker
1262*481dde66SAndroid Build Coastguard Worker`TimeInMillis TestResult::start_timestamp() const`
1263*481dde66SAndroid Build Coastguard Worker
1264*481dde66SAndroid Build Coastguard WorkerGets the time of the test case start, in ms from the start of the UNIX epoch.
1265*481dde66SAndroid Build Coastguard Worker
1266*481dde66SAndroid Build Coastguard Worker##### GetTestPartResult {#TestResult::GetTestPartResult}
1267*481dde66SAndroid Build Coastguard Worker
1268*481dde66SAndroid Build Coastguard Worker`const TestPartResult& TestResult::GetTestPartResult(int i) const`
1269*481dde66SAndroid Build Coastguard Worker
1270*481dde66SAndroid Build Coastguard WorkerReturns the [`TestPartResult`](#TestPartResult) for the `i`-th test part result
1271*481dde66SAndroid Build Coastguard Workeramong all the results. `i` can range from 0 to `total_part_count() - 1`. If `i`
1272*481dde66SAndroid Build Coastguard Workeris not in that range, aborts the program.
1273*481dde66SAndroid Build Coastguard Worker
1274*481dde66SAndroid Build Coastguard Worker##### GetTestProperty {#TestResult::GetTestProperty}
1275*481dde66SAndroid Build Coastguard Worker
1276*481dde66SAndroid Build Coastguard Worker`const TestProperty& TestResult::GetTestProperty(int i) const`
1277*481dde66SAndroid Build Coastguard Worker
1278*481dde66SAndroid Build Coastguard WorkerReturns the [`TestProperty`](#TestProperty) object for the `i`-th test property.
1279*481dde66SAndroid Build Coastguard Worker`i` can range from 0 to `test_property_count() - 1`. If `i` is not in that
1280*481dde66SAndroid Build Coastguard Workerrange, aborts the program.
1281*481dde66SAndroid Build Coastguard Worker
1282*481dde66SAndroid Build Coastguard Worker### TimeInMillis {#TimeInMillis}
1283*481dde66SAndroid Build Coastguard Worker
1284*481dde66SAndroid Build Coastguard Worker`testing::TimeInMillis`
1285*481dde66SAndroid Build Coastguard Worker
1286*481dde66SAndroid Build Coastguard WorkerAn integer type representing time in milliseconds.
1287*481dde66SAndroid Build Coastguard Worker
1288*481dde66SAndroid Build Coastguard Worker### Types {#Types}
1289*481dde66SAndroid Build Coastguard Worker
1290*481dde66SAndroid Build Coastguard Worker`testing::Types<T...>`
1291*481dde66SAndroid Build Coastguard Worker
1292*481dde66SAndroid Build Coastguard WorkerRepresents a list of types for use in typed tests and type-parameterized tests.
1293*481dde66SAndroid Build Coastguard Worker
1294*481dde66SAndroid Build Coastguard WorkerThe template argument `T...` can be any number of types, for example:
1295*481dde66SAndroid Build Coastguard Worker
1296*481dde66SAndroid Build Coastguard Worker```
1297*481dde66SAndroid Build Coastguard Workertesting::Types<char, int, unsigned int>
1298*481dde66SAndroid Build Coastguard Worker```
1299*481dde66SAndroid Build Coastguard Worker
1300*481dde66SAndroid Build Coastguard WorkerSee [Typed Tests](../advanced.md#typed-tests) and
1301*481dde66SAndroid Build Coastguard Worker[Type-Parameterized Tests](../advanced.md#type-parameterized-tests) for more
1302*481dde66SAndroid Build Coastguard Workerinformation.
1303*481dde66SAndroid Build Coastguard Worker
1304*481dde66SAndroid Build Coastguard Worker### WithParamInterface {#WithParamInterface}
1305*481dde66SAndroid Build Coastguard Worker
1306*481dde66SAndroid Build Coastguard Worker`testing::WithParamInterface<T>`
1307*481dde66SAndroid Build Coastguard Worker
1308*481dde66SAndroid Build Coastguard WorkerThe pure interface class that all value-parameterized tests inherit from.
1309*481dde66SAndroid Build Coastguard Worker
1310*481dde66SAndroid Build Coastguard WorkerA value-parameterized test fixture class must inherit from both [`Test`](#Test)
1311*481dde66SAndroid Build Coastguard Workerand `WithParamInterface`. In most cases that just means inheriting from
1312*481dde66SAndroid Build Coastguard Worker[`TestWithParam`](#TestWithParam), but more complicated test hierarchies may
1313*481dde66SAndroid Build Coastguard Workerneed to inherit from `Test` and `WithParamInterface` at different levels.
1314*481dde66SAndroid Build Coastguard Worker
1315*481dde66SAndroid Build Coastguard WorkerThis interface defines the type alias `ParamType` for the parameter type `T` and
1316*481dde66SAndroid Build Coastguard Workerhas support for accessing the test parameter value via the `GetParam()` method:
1317*481dde66SAndroid Build Coastguard Worker
1318*481dde66SAndroid Build Coastguard Worker```
1319*481dde66SAndroid Build Coastguard Workerstatic const ParamType& GetParam()
1320*481dde66SAndroid Build Coastguard Worker```
1321*481dde66SAndroid Build Coastguard Worker
1322*481dde66SAndroid Build Coastguard WorkerFor more information, see
1323*481dde66SAndroid Build Coastguard Worker[Value-Parameterized Tests](../advanced.md#value-parameterized-tests).
1324*481dde66SAndroid Build Coastguard Worker
1325*481dde66SAndroid Build Coastguard Worker## Functions
1326*481dde66SAndroid Build Coastguard Worker
1327*481dde66SAndroid Build Coastguard WorkerGoogleTest defines the following functions to help with writing and running
1328*481dde66SAndroid Build Coastguard Workertests.
1329*481dde66SAndroid Build Coastguard Worker
1330*481dde66SAndroid Build Coastguard Worker### InitGoogleTest {#InitGoogleTest}
1331*481dde66SAndroid Build Coastguard Worker
1332*481dde66SAndroid Build Coastguard Worker`void testing::InitGoogleTest(int* argc, char** argv)` \
1333*481dde66SAndroid Build Coastguard Worker`void testing::InitGoogleTest(int* argc, wchar_t** argv)` \
1334*481dde66SAndroid Build Coastguard Worker`void testing::InitGoogleTest()`
1335*481dde66SAndroid Build Coastguard Worker
1336*481dde66SAndroid Build Coastguard WorkerInitializes GoogleTest. This must be called before calling
1337*481dde66SAndroid Build Coastguard Worker[`RUN_ALL_TESTS()`](#RUN_ALL_TESTS). In particular, it parses the command line
1338*481dde66SAndroid Build Coastguard Workerfor the flags that GoogleTest recognizes. Whenever a GoogleTest flag is seen, it
1339*481dde66SAndroid Build Coastguard Workeris removed from `argv`, and `*argc` is decremented. Keep in mind that `argv`
1340*481dde66SAndroid Build Coastguard Workermust terminate with a `NULL` pointer (i.e. `argv[argc]` is `NULL`), which is
1341*481dde66SAndroid Build Coastguard Workeralready the case with the default `argv` passed to `main`.
1342*481dde66SAndroid Build Coastguard Worker
1343*481dde66SAndroid Build Coastguard WorkerNo value is returned. Instead, the GoogleTest flag variables are updated.
1344*481dde66SAndroid Build Coastguard Worker
1345*481dde66SAndroid Build Coastguard WorkerThe `InitGoogleTest(int* argc, wchar_t** argv)` overload can be used in Windows
1346*481dde66SAndroid Build Coastguard Workerprograms compiled in `UNICODE` mode.
1347*481dde66SAndroid Build Coastguard Worker
1348*481dde66SAndroid Build Coastguard WorkerThe argument-less `InitGoogleTest()` overload can be used on Arduino/embedded
1349*481dde66SAndroid Build Coastguard Workerplatforms where there is no `argc`/`argv`.
1350*481dde66SAndroid Build Coastguard Worker
1351*481dde66SAndroid Build Coastguard Worker### AddGlobalTestEnvironment {#AddGlobalTestEnvironment}
1352*481dde66SAndroid Build Coastguard Worker
1353*481dde66SAndroid Build Coastguard Worker`Environment* testing::AddGlobalTestEnvironment(Environment* env)`
1354*481dde66SAndroid Build Coastguard Worker
1355*481dde66SAndroid Build Coastguard WorkerAdds a test environment to the test program. Must be called before
1356*481dde66SAndroid Build Coastguard Worker[`RUN_ALL_TESTS()`](#RUN_ALL_TESTS) is called. See
1357*481dde66SAndroid Build Coastguard Worker[Global Set-Up and Tear-Down](../advanced.md#global-set-up-and-tear-down) for
1358*481dde66SAndroid Build Coastguard Workermore information.
1359*481dde66SAndroid Build Coastguard Worker
1360*481dde66SAndroid Build Coastguard WorkerSee also [`Environment`](#Environment).
1361*481dde66SAndroid Build Coastguard Worker
1362*481dde66SAndroid Build Coastguard Worker### RegisterTest {#RegisterTest}
1363*481dde66SAndroid Build Coastguard Worker
1364*481dde66SAndroid Build Coastguard Worker```cpp
1365*481dde66SAndroid Build Coastguard Workertemplate <typename Factory>
1366*481dde66SAndroid Build Coastguard WorkerTestInfo* testing::RegisterTest(const char* test_suite_name, const char* test_name,
1367*481dde66SAndroid Build Coastguard Worker                                  const char* type_param, const char* value_param,
1368*481dde66SAndroid Build Coastguard Worker                                  const char* file, int line, Factory factory)
1369*481dde66SAndroid Build Coastguard Worker```
1370*481dde66SAndroid Build Coastguard Worker
1371*481dde66SAndroid Build Coastguard WorkerDynamically registers a test with the framework.
1372*481dde66SAndroid Build Coastguard Worker
1373*481dde66SAndroid Build Coastguard WorkerThe `factory` argument is a factory callable (move-constructible) object or
1374*481dde66SAndroid Build Coastguard Workerfunction pointer that creates a new instance of the `Test` object. It handles
1375*481dde66SAndroid Build Coastguard Workerownership to the caller. The signature of the callable is `Fixture*()`, where
1376*481dde66SAndroid Build Coastguard Worker`Fixture` is the test fixture class for the test. All tests registered with the
1377*481dde66SAndroid Build Coastguard Workersame `test_suite_name` must return the same fixture type. This is checked at
1378*481dde66SAndroid Build Coastguard Workerruntime.
1379*481dde66SAndroid Build Coastguard Worker
1380*481dde66SAndroid Build Coastguard WorkerThe framework will infer the fixture class from the factory and will call the
1381*481dde66SAndroid Build Coastguard Worker`SetUpTestSuite` and `TearDownTestSuite` methods for it.
1382*481dde66SAndroid Build Coastguard Worker
1383*481dde66SAndroid Build Coastguard WorkerMust be called before [`RUN_ALL_TESTS()`](#RUN_ALL_TESTS) is invoked, otherwise
1384*481dde66SAndroid Build Coastguard Workerbehavior is undefined.
1385*481dde66SAndroid Build Coastguard Worker
1386*481dde66SAndroid Build Coastguard WorkerSee
1387*481dde66SAndroid Build Coastguard Worker[Registering tests programmatically](../advanced.md#registering-tests-programmatically)
1388*481dde66SAndroid Build Coastguard Workerfor more information.
1389*481dde66SAndroid Build Coastguard Worker
1390*481dde66SAndroid Build Coastguard Worker### RUN_ALL_TESTS {#RUN_ALL_TESTS}
1391*481dde66SAndroid Build Coastguard Worker
1392*481dde66SAndroid Build Coastguard Worker`int RUN_ALL_TESTS()`
1393*481dde66SAndroid Build Coastguard Worker
1394*481dde66SAndroid Build Coastguard WorkerUse this function in `main()` to run all tests. It returns `0` if all tests are
1395*481dde66SAndroid Build Coastguard Workersuccessful, or `1` otherwise.
1396*481dde66SAndroid Build Coastguard Worker
1397*481dde66SAndroid Build Coastguard Worker`RUN_ALL_TESTS()` should be invoked after the command line has been parsed by
1398*481dde66SAndroid Build Coastguard Worker[`InitGoogleTest()`](#InitGoogleTest).
1399*481dde66SAndroid Build Coastguard Worker
1400*481dde66SAndroid Build Coastguard WorkerThis function was formerly a macro; thus, it is in the global namespace and has
1401*481dde66SAndroid Build Coastguard Workeran all-caps name.
1402*481dde66SAndroid Build Coastguard Worker
1403*481dde66SAndroid Build Coastguard Worker### AssertionSuccess {#AssertionSuccess}
1404*481dde66SAndroid Build Coastguard Worker
1405*481dde66SAndroid Build Coastguard Worker`AssertionResult testing::AssertionSuccess()`
1406*481dde66SAndroid Build Coastguard Worker
1407*481dde66SAndroid Build Coastguard WorkerCreates a successful assertion result. See
1408*481dde66SAndroid Build Coastguard Worker[`AssertionResult`](#AssertionResult).
1409*481dde66SAndroid Build Coastguard Worker
1410*481dde66SAndroid Build Coastguard Worker### AssertionFailure {#AssertionFailure}
1411*481dde66SAndroid Build Coastguard Worker
1412*481dde66SAndroid Build Coastguard Worker`AssertionResult testing::AssertionFailure()`
1413*481dde66SAndroid Build Coastguard Worker
1414*481dde66SAndroid Build Coastguard WorkerCreates a failed assertion result. Use the `<<` operator to store a failure
1415*481dde66SAndroid Build Coastguard Workermessage:
1416*481dde66SAndroid Build Coastguard Worker
1417*481dde66SAndroid Build Coastguard Worker```cpp
1418*481dde66SAndroid Build Coastguard Workertesting::AssertionFailure() << "My failure message";
1419*481dde66SAndroid Build Coastguard Worker```
1420*481dde66SAndroid Build Coastguard Worker
1421*481dde66SAndroid Build Coastguard WorkerSee [`AssertionResult`](#AssertionResult).
1422*481dde66SAndroid Build Coastguard Worker
1423*481dde66SAndroid Build Coastguard Worker### StaticAssertTypeEq {#StaticAssertTypeEq}
1424*481dde66SAndroid Build Coastguard Worker
1425*481dde66SAndroid Build Coastguard Worker`testing::StaticAssertTypeEq<T1, T2>()`
1426*481dde66SAndroid Build Coastguard Worker
1427*481dde66SAndroid Build Coastguard WorkerCompile-time assertion for type equality. Compiles if and only if `T1` and `T2`
1428*481dde66SAndroid Build Coastguard Workerare the same type. The value it returns is irrelevant.
1429*481dde66SAndroid Build Coastguard Worker
1430*481dde66SAndroid Build Coastguard WorkerSee [Type Assertions](../advanced.md#type-assertions) for more information.
1431*481dde66SAndroid Build Coastguard Worker
1432*481dde66SAndroid Build Coastguard Worker### PrintToString {#PrintToString}
1433*481dde66SAndroid Build Coastguard Worker
1434*481dde66SAndroid Build Coastguard Worker`std::string testing::PrintToString(x)`
1435*481dde66SAndroid Build Coastguard Worker
1436*481dde66SAndroid Build Coastguard WorkerPrints any value `x` using GoogleTest's value printer.
1437*481dde66SAndroid Build Coastguard Worker
1438*481dde66SAndroid Build Coastguard WorkerSee
1439*481dde66SAndroid Build Coastguard Worker[Teaching GoogleTest How to Print Your Values](../advanced.md#teaching-googletest-how-to-print-your-values)
1440*481dde66SAndroid Build Coastguard Workerfor more information.
1441*481dde66SAndroid Build Coastguard Worker
1442*481dde66SAndroid Build Coastguard Worker### PrintToStringParamName {#PrintToStringParamName}
1443*481dde66SAndroid Build Coastguard Worker
1444*481dde66SAndroid Build Coastguard Worker`std::string testing::PrintToStringParamName(TestParamInfo<T>& info)`
1445*481dde66SAndroid Build Coastguard Worker
1446*481dde66SAndroid Build Coastguard WorkerA built-in parameterized test name generator which returns the result of
1447*481dde66SAndroid Build Coastguard Worker[`PrintToString`](#PrintToString) called on `info.param`. Does not work when the
1448*481dde66SAndroid Build Coastguard Workertest parameter is a `std::string` or C string. See
1449*481dde66SAndroid Build Coastguard Worker[Specifying Names for Value-Parameterized Test Parameters](../advanced.md#specifying-names-for-value-parameterized-test-parameters)
1450*481dde66SAndroid Build Coastguard Workerfor more information.
1451*481dde66SAndroid Build Coastguard Worker
1452*481dde66SAndroid Build Coastguard WorkerSee also [`TestParamInfo`](#TestParamInfo) and
1453*481dde66SAndroid Build Coastguard Worker[`INSTANTIATE_TEST_SUITE_P`](#INSTANTIATE_TEST_SUITE_P).
1454