Some things are hard to unit test either because they have so many dependencies (either data or other code), because the algorithm is so complex that it is virtually impossible to figure out what the right answer is except by programming an implementation and running the code, or because they are non-deterministic.