Вы, вероятно, получите некоторую разницу здесь, но, как правило, цель написания тестов (для меня) состоит в том, чтобы гарантировать, что весь ваш код работает должным образом, без побочных эффектов, предсказуемым образом и без дефектов. Поэтому, на мой взгляд, подход, который вы обсуждаете, заключающийся только в написании тестов для вариантов использования в том виде, в каком они встречаются, не приносит вам никакой пользы и может фактически причинить вред.
Что если конкретный вариант использования игнорируемого устройства вызывает серьезный дефект в конечном программном обеспечении? Разве время, потраченное на разработку тестов, принесло вам что-то в этом сценарии, кроме ложного чувства безопасности?
(Кстати, это одна из проблем, с которыми я сталкиваюсь при использовании покрытия кода для «измерения» качества теста - это измерение, которое, если оно низкое, может указывать на то, что вы недостаточно тестируете, но если высокий, не должен использоваться, чтобы предположить, что вы твердые. Получите проверенные общие случаи, проверенные крайние случаи, затем рассмотрите все и, и, и, и, и, и того), и протестируйте их тоже.)
Мягкое обновление
Должен заметить, что я иду с другой точки зрения, чем многие здесь. Я часто нахожу, что пишу код в библиотечном стиле, то есть код, который будет повторно использоваться в нескольких проектах для разных клиентов. В результате я, как правило, не могу с уверенностью сказать, что определенных вариантов использования просто не произойдет. Лучшее, что я могу сделать, это либо документ, что они не ожидаются (и, следовательно, может потребовать обновления тестов позже), либо - и это мое предпочтение :) - просто написание тестов. Я часто нахожу вариант № 2 для более пригодного для повседневного использования, просто потому, что у меня гораздо больше уверенности, когда я повторно использую компонент X в новом приложении Y. И уверенность, на мой взгляд, то, что автоматическое тестирование является все о.