|
|
@ -813,7 +813,8 @@ initialized from the command-line flag `--gtest_death_test_style`). |
|
|
|
consideration to be run - much like the `threadsafe` mode on POSIX. |
|
|
|
consideration to be run - much like the `threadsafe` mode on POSIX. |
|
|
|
|
|
|
|
|
|
|
|
Other values for the variable are illegal and will cause the death test to fail. |
|
|
|
Other values for the variable are illegal and will cause the death test to fail. |
|
|
|
Currently, the flag's default value is **"fast"** |
|
|
|
Currently, the flag's default value is |
|
|
|
|
|
|
|
**`"fast"`**. |
|
|
|
|
|
|
|
|
|
|
|
1. the child's exit status satisfies the predicate, and |
|
|
|
1. the child's exit status satisfies the predicate, and |
|
|
|
2. the child's stderr matches the regular expression. |
|
|
|
2. the child's stderr matches the regular expression. |
|
|
@ -1374,7 +1375,7 @@ The following statement will instantiate tests from the `FooTest` test suite |
|
|
|
each with parameter values `"meeny"`, `"miny"`, and `"moe"`. |
|
|
|
each with parameter values `"meeny"`, `"miny"`, and `"moe"`. |
|
|
|
|
|
|
|
|
|
|
|
```c++ |
|
|
|
```c++ |
|
|
|
INSTANTIATE_TEST_SUITE_P(InstantiationName, |
|
|
|
INSTANTIATE_TEST_SUITE_P(MeenyMinyMoe, |
|
|
|
FooTest, |
|
|
|
FooTest, |
|
|
|
testing::Values("meeny", "miny", "moe")); |
|
|
|
testing::Values("meeny", "miny", "moe")); |
|
|
|
``` |
|
|
|
``` |
|
|
@ -1383,51 +1384,54 @@ INSTANTIATE_TEST_SUITE_P(InstantiationName, |
|
|
|
NOTE: The code above must be placed at global or namespace scope, not at |
|
|
|
NOTE: The code above must be placed at global or namespace scope, not at |
|
|
|
function scope. |
|
|
|
function scope. |
|
|
|
|
|
|
|
|
|
|
|
Per default, every `TEST_P` without a corresponding `INSTANTIATE_TEST_SUITE_P` |
|
|
|
The first argument to `INSTANTIATE_TEST_SUITE_P` is a unique name for the |
|
|
|
causes a failing test in test suite `GoogleTestVerification`. If you have a test |
|
|
|
instantiation of the test suite. The next argument is the name of the test |
|
|
|
suite where that omission is not an error, for example it is in a library that |
|
|
|
pattern, and the last is the parameter generator. |
|
|
|
may be linked in for other reason or where the list of test cases is dynamic and |
|
|
|
|
|
|
|
may be empty, then this check can be suppressed by tagging the test suite: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```c++ |
|
|
|
You can instantiate a test pattern more than once, so to distinguish different |
|
|
|
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(FooTest); |
|
|
|
instances of the pattern, the instantiation name is added as a prefix to the |
|
|
|
``` |
|
|
|
actual test suite name. Remember to pick unique prefixes for different |
|
|
|
|
|
|
|
instantiations. The tests from the instantiation above will have these names: |
|
|
|
To distinguish different instances of the pattern (yes, you can instantiate it |
|
|
|
|
|
|
|
more than once), the first argument to `INSTANTIATE_TEST_SUITE_P` is a prefix |
|
|
|
|
|
|
|
that will be added to the actual test suite name. Remember to pick unique |
|
|
|
|
|
|
|
prefixes for different instantiations. The tests from the instantiation above |
|
|
|
|
|
|
|
will have these names: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* `InstantiationName/FooTest.DoesBlah/0` for `"meeny"` |
|
|
|
* `MeenyMinyMoe/FooTest.DoesBlah/0` for `"meeny"` |
|
|
|
* `InstantiationName/FooTest.DoesBlah/1` for `"miny"` |
|
|
|
* `MeenyMinyMoe/FooTest.DoesBlah/1` for `"miny"` |
|
|
|
* `InstantiationName/FooTest.DoesBlah/2` for `"moe"` |
|
|
|
* `MeenyMinyMoe/FooTest.DoesBlah/2` for `"moe"` |
|
|
|
* `InstantiationName/FooTest.HasBlahBlah/0` for `"meeny"` |
|
|
|
* `MeenyMinyMoe/FooTest.HasBlahBlah/0` for `"meeny"` |
|
|
|
* `InstantiationName/FooTest.HasBlahBlah/1` for `"miny"` |
|
|
|
* `MeenyMinyMoe/FooTest.HasBlahBlah/1` for `"miny"` |
|
|
|
* `InstantiationName/FooTest.HasBlahBlah/2` for `"moe"` |
|
|
|
* `MeenyMinyMoe/FooTest.HasBlahBlah/2` for `"moe"` |
|
|
|
|
|
|
|
|
|
|
|
You can use these names in [`--gtest_filter`](#running-a-subset-of-the-tests). |
|
|
|
You can use these names in [`--gtest_filter`](#running-a-subset-of-the-tests). |
|
|
|
|
|
|
|
|
|
|
|
This statement will instantiate all tests from `FooTest` again, each with |
|
|
|
The following statement will instantiate all tests from `FooTest` again, each |
|
|
|
parameter values `"cat"` and `"dog"`: |
|
|
|
with parameter values `"cat"` and `"dog"`: |
|
|
|
|
|
|
|
|
|
|
|
```c++ |
|
|
|
```c++ |
|
|
|
const char* pets[] = {"cat", "dog"}; |
|
|
|
const char* pets[] = {"cat", "dog"}; |
|
|
|
INSTANTIATE_TEST_SUITE_P(AnotherInstantiationName, FooTest, |
|
|
|
INSTANTIATE_TEST_SUITE_P(Pets, FooTest, testing::ValuesIn(pets)); |
|
|
|
testing::ValuesIn(pets)); |
|
|
|
|
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
The tests from the instantiation above will have these names: |
|
|
|
The tests from the instantiation above will have these names: |
|
|
|
|
|
|
|
|
|
|
|
* `AnotherInstantiationName/FooTest.DoesBlah/0` for `"cat"` |
|
|
|
* `Pets/FooTest.DoesBlah/0` for `"cat"` |
|
|
|
* `AnotherInstantiationName/FooTest.DoesBlah/1` for `"dog"` |
|
|
|
* `Pets/FooTest.DoesBlah/1` for `"dog"` |
|
|
|
* `AnotherInstantiationName/FooTest.HasBlahBlah/0` for `"cat"` |
|
|
|
* `Pets/FooTest.HasBlahBlah/0` for `"cat"` |
|
|
|
* `AnotherInstantiationName/FooTest.HasBlahBlah/1` for `"dog"` |
|
|
|
* `Pets/FooTest.HasBlahBlah/1` for `"dog"` |
|
|
|
|
|
|
|
|
|
|
|
Please note that `INSTANTIATE_TEST_SUITE_P` will instantiate *all* tests in the |
|
|
|
Please note that `INSTANTIATE_TEST_SUITE_P` will instantiate *all* tests in the |
|
|
|
given test suite, whether their definitions come before or *after* the |
|
|
|
given test suite, whether their definitions come before or *after* the |
|
|
|
`INSTANTIATE_TEST_SUITE_P` statement. |
|
|
|
`INSTANTIATE_TEST_SUITE_P` statement. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Additionally, by default, every `TEST_P` without a corresponding |
|
|
|
|
|
|
|
`INSTANTIATE_TEST_SUITE_P` causes a failing test in test suite |
|
|
|
|
|
|
|
`GoogleTestVerification`. If you have a test suite where that omission is not an |
|
|
|
|
|
|
|
error, for example it is in a library that may be linked in for other reasons or |
|
|
|
|
|
|
|
where the list of test cases is dynamic and may be empty, then this check can be |
|
|
|
|
|
|
|
suppressed by tagging the test suite: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```c++ |
|
|
|
|
|
|
|
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(FooTest); |
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
You can see [sample7_unittest.cc] and [sample8_unittest.cc] for more examples. |
|
|
|
You can see [sample7_unittest.cc] and [sample8_unittest.cc] for more examples. |
|
|
|
|
|
|
|
|
|
|
|
[sample7_unittest.cc]: https://github.com/google/googletest/blob/master/googletest/samples/sample7_unittest.cc "Parameterized Test example" |
|
|
|
[sample7_unittest.cc]: https://github.com/google/googletest/blob/master/googletest/samples/sample7_unittest.cc "Parameterized Test example" |
|
|
|