У меня есть класс для шифрования connectionString.
public class SKM
{
private string connStrName = "AndeDBEntities";
internal void encryptConnStr()
{
if(isConnStrEncrypted())
return;
...
}
private bool isConnStrEncrypted()
{
bool status = false;
// Open app.config of executable.
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// Get the connection string from the app.config file.
string connStr = config.ConnectionStrings.ConnectionStrings[connStrName].ConnectionString;
status = !(connStr.Contains("provider"));
Log.logItem(LogType.DebugDevelopment, "isConnStrEncrypted", "SKM::isConnStrEncrypted()", "isConnStrEncrypted=" + status);
return status;
}
}
Вышеупомянутый код прекрасно работает в моем приложении. Но не в моем проекте модульного тестирования.
В моем проекте модульного тестирования я тестирую метод encryptConnStr()
. это вызовет isConnStrEncrypted()
метод. Тогда исключение (нулевой указатель) будет выдано в этой строке:
string connStr = config.ConnectionStrings.ConnectionStrings[connStrName].ConnectionString;
Я должен использовать такой индекс, чтобы пройти модульный тест:
string connStr = config.ConnectionStrings.ConnectionStrings[0].ConnectionString;
Я помню, это работало несколько дней назад, когда я добавил выше юнит-тест Но теперь это дает мне ошибку. Модульный тест еще не интегрирован с нашей ежедневной автоматической сборкой. У нас есть только ОДНО connectionStr. Работает с продуктом, но не в модульном тесте. Не знаю почему. Кто-нибудь может мне объяснить?