2014-10-24 2 views
0

У меня довольно странная проблема. У меня есть некоторые модульные тесты, предназначенные для проверки исключений, возникающих в некоторых TCP-связях, над которыми я работаю. Индивидуально, все тесты работают. Однако, если я попытаюсь запустить их последовательно, первый из них пройдет, а все остальные тесты потерпят неудачу. Я не знаю, почему это происходит. Я каждый раз создаю новый сокет в своем [TestInitialize]. Я подумал, что слушатель просто висит, поэтому я подождал в начале теста 2 из 10 секунд, и он все еще терпит неудачу. НО, когда я запускаю тестовый тест, а затем тестирую два спина к спине (около 1 секунды отдельно), все работает.C# TCP Unit Tests SocketException не может запускать все тесты

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

«Только одно использование каждого адреса сокета (протокол/сетевой адрес/порт) обычно разрешается»

+2

Некоторые коды помогают читателям. Помогите нам помочь вам. Но «догадка» заключается в том, чтобы закрыть розетку при очистке? Или, если хотите, используйте другой порт. –

+0

Я бы предположил из-за ошибки, что вы не можете закрыть сокет после завершения теста. Однако, пожалуйста, добавьте код, чтобы лучше анализировать. – Kami

ответ

0

Я понял ошибку. Я делал сокет и привязывал его под атрибутом TestInitialize. Мне нужно было сделать сокет под атрибутом ClassInitialize, чтобы он всегда был там. Затем я просто открываю свои потоки чтения в моей области TestInitialize.

Смежные вопросы