Googletest export
Add a caveat section for potential memory leak with derived classes using `SetUpTestSuite`.
PiperOrigin-RevId: 396986728
diff --git a/docs/advanced.md b/docs/advanced.md
index 620180f..c71ba41 100644
--- a/docs/advanced.md
+++ b/docs/advanced.md
@@ -887,6 +887,12 @@
of any shared resource, or, if they do modify the state, they must restore the
state to its original value before passing control to the next test.
+Note that `SetUpTestSuite()` may be called multiple times for a test fixture
+class that has derived classes, so you should not expect code in the function
+body to be run only once. Also, derived classes still have access to shared
+resources defined as static members, so careful consideration is needed when
+managing shared resources to avoid memory leaks.
+
Here's an example of per-test-suite set-up and tear-down:
```c++
@@ -896,7 +902,10 @@
// Called before the first test in this test suite.
// Can be omitted if not needed.
static void SetUpTestSuite() {
- shared_resource_ = new ...;
+ // Avoid reallocating static objects if called in subclasses of FooTest.
+ if (shared_resource_ == nullptr) {
+ shared_resource_ = new ...;
+ }
}
// Per-test-suite tear-down.