1 .. SPDX-License-Identifier: GPL-2.0 2 3 ================================= 4 KUnit - Linux Kernel Unit Testing 5 ================================= 6 7 .. toctree:: 8 :maxdepth: 2 9 :caption: Contents: 10 11 start 12 architecture 13 run_wrapper 14 run_manual 15 usage 16 api/index 17 style 18 faq 19 running_tips 20 21 This section details the kernel unit testing f 22 23 Introduction 24 ============ 25 26 KUnit (Kernel unit testing framework) provides 27 unit tests within the Linux kernel. Using KUni 28 of test cases called test suites. The tests ei 29 if built-in, or load as a module. KUnit automa 30 failed test cases in the kernel log. The test 31 :doc:`KTAP (Kernel - Test Anything Protocol) f 32 It is inspired by JUnit, Python’s unittest.m 33 (C++ unit testing framework). 34 35 KUnit tests are part of the kernel, written in 36 language, and test parts of the Kernel impleme 37 language function). Excluding build time, from 38 completion, KUnit can run around 100 tests in 39 KUnit can test any kernel component, for examp 40 calls, memory management, device drivers and s 41 42 KUnit follows the white-box testing approach. 43 internal system functionality. KUnit runs in k 44 restricted to things exposed to user-space. 45 46 In addition, KUnit has kunit_tool, a script (` 47 that configures the Linux kernel, runs KUnit t 48 (:doc:`User Mode Linux </virt/uml/user_mode_li 49 parses the test results and 50 displays them in a user friendly manner. 51 52 Features 53 -------- 54 55 - Provides a framework for writing unit tests. 56 - Runs tests on any kernel architecture. 57 - Runs a test in milliseconds. 58 59 Prerequisites 60 ------------- 61 62 - Any Linux kernel compatible hardware. 63 - For Kernel under test, Linux kernel version 64 65 Unit Testing 66 ============ 67 68 A unit test tests a single unit of code in iso 69 granularity of testing and allows all possible 70 code under test. This is possible if the code 71 have any external dependencies outside of the 72 73 74 Write Unit Tests 75 ---------------- 76 77 To write good unit tests, there is a simple bu 78 Arrange-Act-Assert. This is a great way to str 79 defines an order of operations. 80 81 - Arrange inputs and targets: At the start of 82 that allows a function to work. Example: ini 83 object. 84 - Act on the target behavior: Call your functi 85 - Assert expected outcome: Verify that the res 86 expected. 87 88 Unit Testing Advantages 89 ----------------------- 90 91 - Increases testing speed and development in t 92 - Detects bugs at initial stage and therefore 93 compared to acceptance testing. 94 - Improves code quality. 95 - Encourages writing testable code. 96 97 Read also :ref:`kinds-of-tests`. 98 99 How do I use it? 100 ================ 101 102 You can find a step-by-step guide to writing a 103 Documentation/dev-tools/kunit/start.rst 104 105 Alternatively, feel free to look through the r 106 or to experiment with tools/testing/kunit/kuni 107 lib/kunit/kunit-example-test.c 108 109 Happy testing!
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.