Я не думаю, что что-то не так с написанием ваших интеграционных тестов с использованием Unit Testing Framework, с которым вы уже знакомы.Поскольку это интеграционные тесты, есть несколько вещей, которые отличают их от ваших модульных тестов.Одним из них является тот факт, что они зависят от внешних систем (даже если вы добавляете некоторые из них в свой код), поэтому, если одна из них недоступна, ваши тесты не пройдут.Другой, как вы уже указали, заключается в том, что интеграционные тесты выполняются дольше.
Способ решения этих проблем состоит в настройке сценариев сборки на , а не .интеграционные тесты во время сборки CI, но вместо этого запускайте их во время плановой сборки (например, ночной сборки).Также важно, чтобы разработчики могли запускать интеграционные тесты вручную по требованию, чтобы они могли проверить на своих локальных машинах, что ни один из тестов не прошел, и, если они есть, иметь возможность проверить, что они исправилипроблема без ручного запуска сборки системы.
В зависимости от используемой среды тестирования существуют разные способы отделения модульных тестов от интеграционных тестов, так что вы можете настроить свои сборки на выполнение одного или обоих.Один из способов - переместить интеграционные тесты в отдельный проект и выполнять тесты в этом проекте только во время вашей ночной сборки.Другой - использовать атрибут типа в NUnit , чтобы пометить некоторые тесты как интеграционные.Затем вы можете настроить тестировщика так, чтобы он исключал тесты из этой категории для сборок, которые вы не хотите выполнять интеграционными тестами.