KUnit - Linux 核心單元測試¶
目錄
本節詳細介紹核心單元測試框架。
簡介¶
KUnit(核心單元測試框架)為 Linux 核心中的單元測試提供了一個通用框架。 使用 KUnit,您可以定義稱為測試套件的測試用例組。 這些測試要麼在核心啟動時執行(如果已內建),要麼作為模組載入。 KUnit 會自動標記並報告核心日誌中失敗的測試用例。 測試結果以 KTAP(核心 - 測試協議)格式顯示。 它受到 JUnit、Python 的 unittest.mock 和 GoogleTest/GoogleMock(C++ 單元測試框架)的啟發。
KUnit 測試是核心的一部分,用 C(程式設計)語言編寫,並測試核心實現的各個部分(例如:一個 C 語言函式)。 從呼叫到完成,不包括構建時間,KUnit 可以在不到 10 秒的時間內執行大約 100 個測試。 KUnit 可以測試任何核心元件,例如:檔案系統、系統呼叫、記憶體管理、裝置驅動程式等。
KUnit 遵循白盒測試方法。 該測試可以訪問內部系統功能。 KUnit 在核心空間中執行,並且不限於暴露給使用者空間的內容。
此外,KUnit 還有一個 kunit_tool 指令碼(tools/testing/kunit/kunit.py),它可以配置 Linux 核心,在 QEMU 或 UML(使用者模式 Linux)下執行 KUnit 測試,解析測試結果,並以使用者友好的方式顯示它們。
特點¶
提供用於編寫單元測試的框架。
在任何核心架構上執行測試。
在幾毫秒內執行測試。
先決條件¶
任何與 Linux 核心相容的硬體。
對於被測核心,Linux 核心版本 5.5 或更高版本。
單元測試¶
單元測試會隔離地測試單個程式碼單元。 單元測試是測試的最精細粒度,允許測試被測程式碼中的所有可能的程式碼路徑。 如果被測程式碼很小並且沒有任何測試控制之外的外部依賴項(如硬體),則這是可能的。
編寫單元測試¶
要編寫好的單元測試,有一個簡單而強大的模式:Arrange-Act-Assert(安排-執行-斷言)。 這是一種構建測試用例的好方法,並定義了操作順序。
安排輸入和目標:在測試開始時,安排允許函式工作的資料。 示例:初始化語句或物件。
對目標行為執行操作:呼叫您的函式/被測程式碼。
斷言預期結果:驗證結果(或最終狀態)是否符合預期。
單元測試優勢¶
從長遠來看,提高測試速度和開發速度。
在初始階段檢測到錯誤,因此與驗收測試相比,降低了錯誤修復成本。
提高程式碼質量。
鼓勵編寫可測試的程式碼。
另請閱讀 單元測試與其他型別的測試有什麼區別?。
如何使用它?¶
您可以在 入門 中找到編寫和執行 KUnit 測試的逐步指南。
或者,您可以隨意瀏覽 KUnit 文件的其餘部分,或者試驗 tools/testing/kunit/kunit.py 和 lib/kunit/kunit-example-test.c 下的示例測試
測試愉快!