Модульный тест и подключение к базе данных SQL

Asked
Viewd1444

0

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

 <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).

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

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

3 ответов

0

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

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

    Aaron M04 июня 2009, 21:51
  • Если вы откроете диспетчер конфигурации SQL Server (при условии, что вы используете SQL 2005 или 2008), разверните «Конфигурация собственного клиента SQL» на панели дерева, там есть узел «Псевдонимы». Если у вас нет записи с названием «Foo», то ссылка на источник данных не будет работать, поскольку она не знает, где искать Foo.

    BenA04 июня 2009, 13:54
  • Не могли бы вы объяснить конфигурацию собственного клиента SQL? Я не уверен, настроен ли этот псевдоним, но подозреваю, что это проблема с запросом LINQ

    Aaron M04 июня 2009, 13:18
0

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

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

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

  • Это не проблема. Я запускаю это на том же компьютере, на котором разрабатываю.

    Aaron M03 июня 2009, 14:45