C # .net исключение при попытке ссылки на соединение БД через тестовый модуль - PullRequest
0 голосов
/ 26 мая 2011

Мои подключения к БД не работают, может кто-нибудь сказать, почему?

Я запускаю это из модульного теста в VS 2010. Простой Assert.IsTrue (testDbConnection), и он не работает. Я также попытался запустить его в обычном режиме в качестве веб-приложения, и я получил то же исключение.

обратите внимание, что XXXXX, конечно, сделаны с целью.

web.config

  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
    <add name="DomainDatabase" connectionString="Data Source=XXXXXXXXXX;Initial Catalog=domain;Persist Security Info=True;User ID=campain_xxx;Password=XXXXXXXXX" providerName="System.Data.SqlClient" />
  </connectionStrings>

Мой метод испытаний

 public bool testDBConnection()
        {
            try
            {
                SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["DomainDatabase"].ConnectionString);
                sqlCon.Open();
                sqlCon.Close();

                return true;
            }
            catch(Exception e)
            {
                Console.WriteLine(e);
                return false;
            }

        } 

Это дает мне исключение

System.NullReferenceException: Object reference not set to an instance of an object.

Ответы [ 2 ]

2 голосов
/ 27 мая 2011

Поскольку ни тесты, ни веб-приложение не работают, вероятно, проблема в том, что конфигурация не загружается. Я подозреваю, что следующее ...

ConfigurationManager.ConnectionStrings["DomainDatabase"]

... возвращает ноль. NullReferenceException выбрасывается при попытке доступа к свойству ConnectionString этого нулевого объекта (ссылка). Я бы проверил, что ваша конфигурация для connectionStrings соответствует определению, определенному здесь :

Вы можете убедиться, что ваши настройки не загружаются, с помощью следующего теста:

[TestMethod]
public void VerifyThatMyDatabaseConnectionStringExists()
{
    Assert.IsNotNull(ConfigurationManager.ConnectionStrings["DomainDatabase"]);
}

Если этот тест не пройден, добавьте app.config в ваш тестовый проект с правильной конфигурацией. Вы узнаете, что решили эту проблему, когда ... вы можете взять этот камешек из моей руки - нет ожидания, неверная ссылка - этот тест пройден.

Подсказка: Этот ответ предлагает вам написать тесты, чтобы убедиться, что ваши настройки присутствуют, чтобы предотвратить безумие.

0 голосов
/ 07 февраля 2018

Попробуйте скопировать файл app.config, у которого есть connectionString, в Test-проект, и он работает!

...