驱动程序测试

手动硬件单元测试

驱动程序可以选择实现 run_unit_tests() 驱动程序操作,该操作为驱动程序提供了一个钩子,使驱动程序可以在系统初始化时通过访问父设备来运行单元测试。这意味着驱动程序可以测试其绑定和取消绑定钩子,以及与真实硬件的任何交互。如果测试通过(驱动程序从钩子返回 true),操作将照常继续,并且 bind() 会执行。如果测试失败,设备管理器将假定驱动程序无效,并且绝不尝试绑定它。

由于这些测试必须在系统初始化时运行(以免干扰驱动程序的正常操作),因此请使用内核命令行标记激活它们。如需为特定驱动程序启用钩子,请使用 driver.<name>.tests.enable。或对于所有驱动程序:driver.tests.enable。如果驱动程序未实现 run_unit_tests(),这些标志将不起作用。

run_unit_tests() 会向驱动程序传递一个通道,供其写入测试输出。测试输出应采用 fuchsia.driver.test.Logger FIDL 消息的形式。 Driver-unit-test 库包含一个 helper 类,该类与 zxtest 集成并为您处理日志记录。

集成测试

驱动程序作者应使用 driver_test_realm 进行集成测试。

单元测试

驱动程序作者应使用 mock-ddk 库进行单元测试。

有许多实用的模拟库:

TODO(https://fxbug.dev/42128499):请在此处填写详细信息。