Unit tests for interrupt-heavy code on an embedded system

Solution 1:

Threads?

Launch a high-priority thread which calls your ISR at some rate similar to the real thing. Then in your main, do the buffer read over and over again in a loop. Validate that the buffer read is not corrupted.

(Maybe this is more of an integration test than a pure unit test.)