2009-06-03 2 views
0

У меня возникла проблема с модульным тестом, который я создал. Первый раз делаю это таким образом, я не знаю, почему я получаю эту ошибкуЕдиничный тест и база данных SQL Connection

<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 для удаленного подключения. (поставщик: поставщик Named Pipes, ошибка: 40 - не удалось открыть соединение с SQL Server).

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

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

ответ

0

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

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

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

+0

Этого не было бы проблемой. Я запускаю это в той же коробке, в которой я ее разрабатываю. –

0

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

+0

Можете ли вы объяснить конфигурацию собственного клиента SQL? Я не уверен, что этот псевдоним настроен, но я подозреваю, что это проблема с запросом LINQ –

+0

Если вы откроете диспетчер конфигурации SQL Server (при условии, что вы используете SQL Server 2005 или 2008), разверните SQL Server Client Configuration на панели дерева , есть узел «Псевдонимы». Если у вас нет записи под названием «Foo», ссылка на источник данных не будет работать, поскольку она не будет знать, где искать Foo. – BenA

+0

Нет, это не проблема. Строка подключения отлично работает в проекте и представляет собой ту же строку соединения, что и мое приложение. –

0

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

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