Если я вызываю метод и ожидаю исключение NullReferenceException, должен ли я проверить это исключение и убедиться, что оно пришло от того места, откуда я ожидал?
Важны ли знания о вашем коде, полученные в результате этого теста?Если это так - проверьте это.С NRE может быть достаточно (и обычно так), чтобы вы знали, что он был брошен при определенных условиях , и это все, что нужно.
Если выброшено исключениеДолжен ли я сразу больше не заботиться о состоянии, или все еще допустимо делать утверждения о состоянии системы?
Это полностью соответствует вашим требованиям.Если состояние после исключительной ситуации нужно каким-то образом обрабатывать , то вам определенно следует написать тесты для этого.
Если я передаю значения NULL в метод, и генерируется исключение NullArgumentException, меня интересует, какой аргумент он выбрасывает или только то, что он был брошен?
Подумайте о своем конечном пользователе.Будет ли ему интересно, какой аргумент вызвал исключение?Будешь ли ты заботиться?Если ваш конечный пользователь будет программистом, просматривающим файл журнала для поиска возможной причины сбоя, то я могу себе представить, что он будет благодарен, что вы предоставили эту информацию.Это всегда вопрос «Это имеет какое-то значение для пользователя?» .Если это так (и вы хотите убедиться, что это значение было предоставлено) - проверьте его.
В настоящее время я считаю, что после того, как будет выдано исключение, все ставки отмененыс точки зрения состояния системы, и углубляться в исключения - плохо, так как в этот момент вы начинаете проверять, как реализован ваш метод.
Исключение, как следует из названия, означает исключительная ситуация .Отключены ли все ставки, зависит только от того, что ваше приложение принимает в этих исключительных ситуациях.Если все ставки сняты, я предполагаю, что ваше приложение будет действовать одинаково (обрабатывать его самым простым способом и забывать об этом).Однако, если ваш код хочет сделать что-то (например, журнал, формат для конечного пользователя, повторный выброс и т. Д.) С указанным исключением, то проверка его действительно является правильным исключением с правильным сообщением, брошенным в какую-то скважину.-определенная точка - все те, которые получают ценность и которые стоит проверить.