Maybe you assume add() was implemented with the ADD instruction. If some junior programmer or hardware engineer reimplemented the add() function using ANDS/ORS/XORS, bit inverts and shifts, you might want to unit test it against the ADD instruction.
In general, if you replace the guts of add(), or the unit under test, with a random number or output generator, how would you know that something was broken? Encode that knowledge in your unit tests. If nobody can tell if it's broken, then just check in some code for rand() and go home, your job is done.