third_party/abseil-cpp
Decision: do not use absl
in new code. Generally, absl
is a
poor fit for use cases in Fuchsia. We will remove absl
from the tree
once existing clients of it are migrated away. This removal work is tracked in
https://fxbug.dev/42137495.
third_party/googletest
Gtest
Use the Gtest framework for writing tests everywhere except the Zircon
directory. It provides the TEST
and TEST_F
macros as well as the ASSERT
and EXPECT
variants we use.
Inside the Zircon directory, use system/ulib/zxtest
instead. It provides a
Gtest-like interface with fewer dependencies on higher-level OS concepts like
mutexes (things we want to test). It also supports writing tests in
C which is required for some layers.
Gmock
Gmock has several components. We allow the gmock matchers such as
ElementsAre()
.
There are varying opinions on the team on the function mocking functions
(MOCK_METHOD
and EXPECT_CALL
).
Pros:
- It can be very efficient to do certain types of mocking.
- Some people feel that Gmock-generated mocks are easier to read than the equivalent custom code.
- Lack of a mocking library means some people might not write good tests.
Cons:
- Gmock provides a domain-specific language. Not everybody understands this language, and the complex use of templates and macros make it hard to diagnose problems.
- Some aspects of Gmock encourage overly constrained mocks.
- Combinations of the above can make it harder to make changes to mocked code later.
Decision: do not use the mocking functionality of gmock (MOCK_METHOD
and
EXPECT_CALL
).