Модульный тест и соединение с базой данных SQL - PullRequest
0 голосов
/ 03 июня 2009

У меня проблема с созданным модульным тестом. Я делаю это впервые, поэтому я не уверен, почему я получаю эту ошибку

<DeploymentItem("ETDS.exe")> <DataSource("System.Data.SqlClient", "Data Source=Foo;Initial Catalog=FooDB;Integrated Security=True", "User_Names", DataAccessMethod.Sequential)> <TestMethod()> _
Public Sub ValidateUserNameTest()
    Dim target As Login_Accessor = New Login_Accessor ' TODO: Initialize to an appropriate value
    Dim expected As Boolean = True ' TODO: Initialize to an appropriate value
    Dim actual As Boolean
    actual = target.ValidateUserName
    Assert.AreEqual(expected, actual)
End Sub

Я получаю ошибку

Метод тестирования ETDS_Unit_Tests.LoginTest.ValidateUserNameTest вызвал исключение: System.Data.SqlClient.SqlException: при установлении соединения с SQL Server произошла ошибка сети или конкретного экземпляра. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server).

Это то же соединение, которое использует мое программное обеспечение, и оно работает нормально, только модульный тест не пройден. Что я делаю не так?

Редактировать Кажется, что это не удалось один раз для каждого datarow в таблице. Кроме того, я использую Linq Query в методе, который я тестирую. Я считаю, что это может быть причиной моей ошибки.

Ответы [ 3 ]

0 голосов
/ 04 июня 2009

У вас есть настройка псевдонима Foo в вашей локальной конфигурации SQL Native Client? Без этого «Источник данных = Foo;» ссылка в строке подключения не будет работать.

0 голосов
/ 14 февраля 2013

Я понятия не имею, совпадает ли это с OP, но я нашел решение очень похожей проблемы, добавив Provider=SQLOLEDB; к строке соединения.

0 голосов
/ 03 июня 2009

Поскольку вы используете интегрированную защиту, наиболее вероятна проблема: «Кто выполняет тест и какие права они имеют на сеть и / или SQL Server?» Если это учетная запись локального компьютера, она, вероятно, даже не будет доступна по сети.

Я заметил, что в вашей строке подключения нет Server=

Если вы подключаетесь локально, он должен иметь Server=(local)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...