So far, we've tried to get 100% coverage. We find that it's very easy to let it slip otherwise. However, we have excluded things that we really don't want to or cannot test. That way, we can always know whether our tests aren't complete.

In terms of this specific test, I agree that it's perhaps a bit much but it was necessary to get 100% coverage (i.e. it has a new property "Value", overrides the "Message", and has an additional constructor). We could have excluded it from coverage, but figured we're probably not going to write new exception classes very often so it wasn't a huge deal.