Разумно ли откладывать юнит-тестирование до тех пор, пока интеграционные тесты не пройдут в сценариях, где поведение стороннего API в основном неизвестно? - PullRequest
2 голосов
/ 04 августа 2010

Я не имею в виду откладывать все юнит-тестирование до тех пор, пока не пройдет интеграционное тестирование. Я имею в виду модульные тесты, которые проверяют, правильно ли SUT взаимодействует со сторонним API-интерфейсом Mystery API.

Основанием для отсрочки этих модульных тестов является то, что они проверяют что-то, что неизвестно. Если я не знаю, как работает сторонний API-интерфейс Mystery API, как я могу даже написать модульный тест, чтобы убедиться, что SUT правильно использует сторонний API-интерфейс? Только после того, как пройдут некоторые минимальные интеграционные тесты, я действительно узнаю, какое поведение нужно проверить.

Конечно, все остальные модульные тесты должны быть написаны до того, как SUT будет написано обычным способом (красный, зеленый, рефакторинг).

Ответы [ 2 ]

0 голосов
/ 06 августа 2016

Несколько лет спустя я провел гораздо больше юнит-тестов и чувствую, что понимаю это лучше.Модульные тесты хороши при проверке правильности фрагмента кода, ПРИЗНАВАЯ, что вы правильно понимаете, как использовать фальшивые API-интерфейсы (поддельные / заглушки).Но чтобы правильно подделать эти API, вы должны сначала понять, как они работают.Поэтому после прочтения документации по этим API вы можете проверить свое понимание, выполнив проверку концепции - даже если это означает тестирование кода вручную после его написания - или написав интеграционный тест.Если вы не совсем хорошо разбираетесь в API сторонних разработчиков, вы можете подделать его в модульном тесте и снова следовать TDD.

Оболочки для сторонних API - отличная вещь для написания интеграционных тестовдля, где вы просто тестируете свою минимальную оболочку без фальсификации стороннего API, чтобы убедиться, что вы правильно ее понимаете.Некоторые из этих тестов могут быть не тестами, а демонстрациями, написанными как тесты.Позже они также пригодятся, потому что вы можете просмотреть их, если забудете, как что-то работает, помочь коллеге понять API и обнаружить небольшие изменения при обновлении API.

Сегодня я часто пишу интеграциютесты обёрток, написание демонстраций / примеров использования сторонних API-сценариев, имеющих отношение к моей ситуации, и даже написание производственного кода и его ручное тестирование, если потребуется.Мне нужно только тогда, когда есть неопределенность или неясность в API, который я использую.Как только я почувствую уверенность в том, как его использовать, пришло время для «обычного» TDD.

0 голосов
/ 16 декабря 2015

Предполагая, что это внешний API, я бы сказал, что ваши тесты, скорее всего, не будут считаться юнит-тестами. Это были бы интеграционные тесты.

Как насчет написания макета для тестирования вашего кода как есть, а затем написания правильных интеграционных тестов, когда вы можете получить доступ к стороннему API? Кроме того, если вы проводите модульное тестирование сторонних продуктов, сборка завершится неудачно, как только эти вещи будут недоступны, что может стать проблемой в долгосрочной перспективе.

...