Важно уметь разделять четко код на платформозависимый и платформонезависимый. Обычно платформозависимый код не поддается unit тестам. А платформонезависимый тестируется и прогоняется на удобном хосте с удобным дебагером и тестами. Можно применять TDD. Подтверждение из ниже приведенной книги.
"During this stage, you write code that is platform independent.
You look for opportunities to disconnect software from hardware,
as much as is practical. The boundary between hardware and software becomes evident and is recorded in your test cases."