У меня есть несколько модульных тестов, которые должны подключаться к MySQL Server для получения или изменения данных (я знаю, что это больше похоже на интеграционные тесты, но пока не будем вдаваться в подробности). Полный набор тестов NUnit проходит без проблем как в графическом интерфейсе NUnit, так и в консоли NUnit.
Сейчас я автоматизирую наш процесс сборки с помощью Hudson Continuous Integration. Как часть этого я представил эту пакетную команду, которая будет вызывать консоль NUnit для выполнения тестов сразу после построения полного решения:
"C:\Program Files (x86)\NUnit 2.5.10\bin\net-2.0\nunit-console.exe" /framework:net-4.0 Tests\MyTestProject\bin\Debug\MyTestProject.dll /xml=MyTestProject.dll.xml /config:Debug
exit 0
Это должно работать, но я получаю исключение для всех тестов, которые подключаются к серверу базы данных:
MySql.Data.MySqlClient.MySqlException: невозможно подключиться к любому из указанных хостов MySQL.
Так что Хадсон просто не может добраться до MySQL Server, даже если строка подключения такая же, как если бы я выполнял тесты вручную. Между прочим, Хадсон и сервер находятся в одной машине, что на самом деле и является моей коробкой для разработчиков. Кроме того, несколько тестов, которые не нуждаются в базе данных, пройдут без проблем.
Почему Хадсон не может добраться до MySQL Server?
ОБНОВЛЕНИЕ: Не все тесты дают сбой, а только те тесты, которые используют строку подключения, для которой требуется общая память, например:
server=localhost;user id=root;pooling=false;persist security info=true;connection reset=true;allow user variables=true;password=;protocol=sharedmemory; shared memory name=MYSQL
Тесты, не включающие общую память, успешно пройдены.