Я могу ответить только на ваш вопрос о модульном тесте.
Код, который вы тестируете, - это, по вашим словам, «модуль C #, отвечающий за получение списка сетевых адаптеров, которые« подключены к Интернету »на компьютере с Windows Vista. Модуль использует« Диспетчер списка сетей ». API (или NLM API) для перебора всех сетевых соединений и возврата всех тех, для которых значение IsConnectedToInternet равно true. "
Если бы я писал этот модуль, я бы сначала использовал интерфейс для API NLM, назовите его ... NLMAPIService. Теперь для реального кода создайте адаптер, который реализует NLMAPIService и адаптирует настоящий NLM API.
Для тестирования создайте класс FakeNLMAPI, который реализует NLMAPIService и хранит все свои данные в памяти где-то, или в файле XML, или как угодно. Ваш модуль вызывает методы только в NLMAPIService, поэтому вам не нужно менять какой-либо "настоящий" код в зависимости от того, тестируете вы или нет.
Следовательно, в своем методе настройки теста вы можете создать экземпляр FakeNLMAPI и передать его в свой модуль, а в работе создать экземпляр вашего NLM API-адаптера.
Я собираюсь предположить, что вы можете создавать и изменять объект, представляющий сетевое соединение. Если нет, вы можете использовать тот же шаблон для подделки фактического объекта сетевого подключения.