Скажем, у вас есть тесты для двух методов класса. Первый метод собирает данные из другого уровня и помещает их в какое-то хранилище независимо от времени выполнения (например, таблицы SQL), поэтому все данные, обрабатываемые этим тестом, жестко запрограммированы в тесте. Второй метод отвечает за получение данных от того места, где их оставил первый метод, и их преобразование каким-либо образом (расчет, перемещение определенных частей в другое место и т. Д.).
Теперь у этого второго метода могут быть жестко запрограммированные входные данные, такие как первый, или можно предположить, что два теста будут выполняться последовательно, и он может определить, где остановился 1-й тест, взяв данные, которые действительно были сохранены первым тестом.
Если вы выберете второй вариант, у вас действительно будет хорошая идея, что оба метода хорошо работают вместе, однако, если 1-й тест не пройден, все тесты после него не пройдут, что лишит вас возможности тестирования, помогающего быстрее выявлять ошибки.
Если бы вы выбрали первый вариант, каждый метод был бы изолирован и протестирован независимо, но вы никогда бы не узнали, что они действительно могут работать вместе должным образом.
Какой вариант лучше? Есть ли какая-то альтернатива, например, наличие одного теста для каждого изолированного метода с жестким кодированием, а затем более крупные тесты, содержащие оба метода в одном?