IMO such tests are quite useless as soon as complex (controller) hardware is involved.
IMO unit tests are used to detect regression when a known (old) bug occurs in a new software revision again. Such procedures are essential e.g. for compiler evolution. In µC this would mean that you get an error report, write test code and data sets to detect that error in the current code, then fix it and check that the test now succeeds. Let all unit tests run after every new unit version or at least whenever errors are suspected.
From Wikipedia:
Another challenge related to writing the unit tests is the difficulty of setting up realistic and useful tests. It is necessary to create relevant initial conditions so the part of the application being tested behaves like part of the complete system. If these initial conditions are not set correctly, the test will not be exercising the code in a realistic context, which diminishes the value and accuracy of unit test results.