手動硬體單元測試
驅動程式可以選擇實作 run_unit_tests()
驅動程式庫程式運算,為驅動程式庫提供掛鉤,可在具有父項裝置存取權的系統初始化時執行單元測試。這表示驅動程式庫可能會測試繫結和解除繫結的掛鉤,以及與真實硬體的任何互動。如果測試通過 (驅動程式庫從掛鉤傳回 true
),則作業將照常繼續執行,bind()
則會執行。如果測試失敗,裝置管理員會假設驅動程式庫無效,並且一律不會嘗試繫結。
由於這類測試必須在系統初始化中執行 (為不干擾驅動程式庫的正常作業),因此必須透過核心指令列標記啟動。如要啟用特定驅動程式庫的掛鉤,請使用 driver.<name>.tests.enable
。或者所有驅動程式:driver.tests.enable
。如果驅動程式庫未實作 run_unit_tests()
,則這些標記將不會有任何作用。
run_unit_tests()
會傳遞驅動程式庫管道,以便寫入測試輸出內容。測試輸出內容的格式應為 fuchsia.driver.test.Logger
FIDL 訊息。驅動程式庫-unit-test 程式庫包含與 zxtest 整合的輔助類別,並為您處理記錄作業。
整合測試
驅動程式作者應使用 driver_test_realm 執行整合測試。
單元測試
驅動程式作者應使用 mock-ddk 程式庫進行單元測試。
還有一些實用的模擬程式庫:
- fake_pdev:建立假的 pdev 父項資訊
- mock-mmio-reg 模擬 Mmio 暫存器
- fake-object - 核心物件的假使用者空間版本
TODO(https://fxbug.dev/42128499):請在這裡瞭解詳情。