third_party/abseil-cpp
决定:不要在新代码中使用 absl
。通常,absl
不适合 Fuchsia 中的用例。absl
的现有客户端迁移完成后,我们将从该树中移除 absl
。您可以在 https://fxbug.dev/42137495 中跟踪这项移除工作。
third_party/googletest
Gtest
使用 Gtest 框架可以在除 Zircon 目录之外的任何位置编写测试。它提供了 TEST
和 TEST_F
宏,以及我们使用的 ASSERT
和 EXPECT
变体。
在 Zircon 目录内,改用 system/ulib/zxtest
。它提供了一个类似于 Gtest 的接口,减少了对互斥体(我们想要测试的内容)等更高级别操作系统概念的依赖。此外,它还支持用 C 语言编写测试,这是某些层所必需的。
Gmock
Gmock 包含几个组件。我们允许使用 ElementsAre()
等 gmock 匹配器。
团队对函数模拟函数(MOCK_METHOD
和 EXPECT_CALL
)持有不同的意见。
优点:
- 执行某些类型的模拟可能非常有效。
- 有些人觉得 Gmock 生成的模拟代码比等效的自定义代码更易于阅读。
- 缺少模拟库意味着某些人可能无法编写良好的测试。
缺点:
- Gmock 提供网域特定语言。并非所有人都理解这种语言,模板和宏的复杂使用会导致难以诊断问题。
- Gmock 的某些方面鼓励进行过度约束的模拟。
- 结合使用上述各项可能会导致以后更难更改模拟代码。
决定:不要使用 gmock 的模拟功能(MOCK_METHOD
和 EXPECT_CALL
)。