# Where to Find the GoogleTest Main Public API Header

> Find the GoogleTest main public API header at googletest/include/gtest/gtest.h. This single entry point includes all macros, assertions, and fixture classes for your testing needs.

- Repository: [Google/googletest](https://github.com/google/googletest)
- Tags: api-reference
- Published: 2026-09-02

---

**The GoogleTest main public API header is located at [`googletest/include/gtest/gtest.h`](https://github.com/google/googletest/blob/main/googletest/include/gtest/gtest.h) in the `google/googletest` repository, serving as the single entry point that aggregates all testing macros, assertions, and fixture classes.**

The `google/googletest` framework simplifies C++ unit testing by exposing its entire public interface through one primary header. When you include this file, you gain access to the complete testing toolkit without needing to manage multiple dependencies manually. This architectural decision keeps user code clean while the framework maintainers organize implementation details across modular internal components.

## Location of the Primary Header

The canonical path to the **GoogleTest main public API header** is:

```text
googletest/include/gtest/gtest.h

```

According to the `google/googletest` source code, this file acts as an aggregation layer. Rather than implementing functionality directly, it includes a coordinated set of secondary headers that define specific feature sets. This structure allows you to access the entire testing framework through a single `#include` directive while the library maintains clean separation of concerns internally.

## Core Features Exposed Through gtest.h

When you include [`gtest.h`](https://github.com/google/googletest/blob/main/gtest.h), you immediately unlock the framework's primary testing constructs:

- **Test macros** such as `TEST()` and `TEST_F()` for defining test cases and fixtures
- **Assertion macros** including `EXPECT_EQ()`, `ASSERT_TRUE()`, and fatal/non-fatal validation variants
- **Death test support** through `EXPECT_DEATH()` and related macros
- **Matcher framework** for advanced value comparisons

The header orchestrates these features by internally pulling in specialized secondary headers including [`gtest-assertion-result.h`](https://github.com/google/googletest/blob/main/gtest-assertion-result.h), [`gtest-matchers.h`](https://github.com/google/googletest/blob/main/gtest-matchers.h), and [`gtest-death-test.h`](https://github.com/google/googletest/blob/main/gtest-death-test.h).

## Writing Tests with the Public API

To begin writing tests, include the main header and use the provided macros. The following examples demonstrate basic usage patterns available through the **GoogleTest main public API header**:

```cpp
#include <gtest/gtest.h>

// Basic test case using simple assertions
TEST(MathTest, Addition) {
  EXPECT_EQ(2 + 2, 4);        // Non-fatal assertion
  ASSERT_TRUE(5 > 3);         // Fatal assertion; stops execution on failure
}

```

For scenarios requiring shared setup and teardown logic, use test fixtures via `TEST_F()`:

```cpp
#include <gtest/gtest.h>
#include <stack>

class StackTest : public ::testing::Test {
 protected:
  void SetUp() override {
    s_.push(10);
    s_.push(20);
  }
  
  void TearDown() override {
    while (!s_.empty()) s_.pop();
  }
  
  std::stack<int> s_;
};

TEST_F(StackTest, PopRemovesTopElement) {
  EXPECT_EQ(s_.top(), 20);
  s_.pop();
  EXPECT_EQ(s_.top(), 10);
}

```

Both examples compile with only `#include <gtest/gtest.h>`, confirming that the main header provides complete access to the public API.

## Secondary Headers and Implementation Details

While [`gtest.h`](https://github.com/google/googletest/blob/main/gtest.h) presents a unified interface, the `google/googletest` source code distributes implementation across several specialized files:

- **[`gtest-assertion-result.h`](https://github.com/google/googletest/blob/main/gtest-assertion-result.h)** — Defines types for storing and reporting assertion outcomes
- **[`gtest-matchers.h`](https://github.com/google/googletest/blob/main/gtest-matchers.h)** — Implements the matcher utilities for complex value comparisons
- **[`gtest-death-test.h`](https://github.com/google/googletest/blob/main/gtest-death-test.h)** — Contains macros and infrastructure for death testing

These files reside alongside [`gtest.h`](https://github.com/google/googletest/blob/main/gtest.h) in `googletest/include/gtest/`. Additionally, internal implementation details live in `googletest/include/gtest/internal/*.h`. You should never include these internal headers directly in your test code, as they are not part of the stable public API and may change between releases.

## Summary

- The **GoogleTest main public API header** is located at [`googletest/include/gtest/gtest.h`](https://github.com/google/googletest/blob/main/googletest/include/gtest/gtest.h) in the repository.
- A single `#include <gtest/gtest.h>` statement provides access to all public testing features including `TEST`, `TEST_F`, and assertion macros.
- The header aggregates secondary components like [`gtest-assertion-result.h`](https://github.com/google/googletest/blob/main/gtest-assertion-result.h) and [`gtest-death-test.h`](https://github.com/google/googletest/blob/main/gtest-death-test.h) while shielding users from internal implementation headers in `internal/`.
- You should rely exclusively on [`gtest.h`](https://github.com/google/googletest/blob/main/gtest.h) for your test code to ensure compatibility with future framework updates.

## Frequently Asked Questions

### What is the exact file path for the GoogleTest main public API header?

The primary header file is located at [`googletest/include/gtest/gtest.h`](https://github.com/google/googletest/blob/main/googletest/include/gtest/gtest.h) in the `google/googletest` repository root. This path is consistent across stable releases and the main development branch on GitHub.

### Do I need to include secondary headers like gtest-matchers.h separately?

No. Including [`gtest/gtest.h`](https://github.com/google/googletest/blob/main/gtest/gtest.h) automatically pulls in all necessary secondary headers including [`gtest-matchers.h`](https://github.com/google/googletest/blob/main/gtest-matchers.h), [`gtest-assertion-result.h`](https://github.com/google/googletest/blob/main/gtest-assertion-result.h), and [`gtest-death-test.h`](https://github.com/google/googletest/blob/main/gtest-death-test.h). You should only include the main header to access the complete public API.

### Are the files in the internal/ directory part of the public API?

No. Headers located in `googletest/include/gtest/internal/` contain implementation details that are subject to change without notice. GoogleTest does not guarantee backward compatibility for these internal components, so you should never include them directly in your test source files.

### Can I use GoogleTest without including gtest.h?

Technically, you could include individual secondary headers directly, but this is strongly discouraged. The **GoogleTest main public API header** is the only supported entry point. Including secondary headers directly may break your builds when the internal structure changes in future releases.