Я хочу лучше использовать NUnit для тестирования приложений, которые я пишу, но часто обнаруживаю, что тестируемые модули, которые я пишу, имеют прямую ссылку на среду или базовую базу данных на вместо этого.NUnit тестирование приложения, а не среды или базы данных
Позвольте мне привести пример.
Я пишу класс, который несет единственную ответственность за извлечение строки, которая была сохранена в реестре другим приложением. Ключ хранится в HKCU \ Software \ CustomApplication \ IniPath.
Тестирование, которое я в конечном итоге написал, выглядит следующим образом;
[Test]
public void GetIniDir()
{
RegistryReader r = new RegistryReader();
Assert.AreEqual(@"C:\Programfiles\CustomApplication\SomeDir", r.IniDir);
}
Но проблема в том, что строка @ "C: \ ProgramFiles \ CustomApplication \ SomeDir" на самом деле просто правильно прямо сейчас. Завтра это могло бы быть изменено на @ "C: \ Anotherdir \ SomeDir", и внезапно это прерывает мои модульные тесты, хотя код не изменился.
Эта проблема также возникает, когда я создаю класс, который выполняет операции CRUD с базой данных. Данные в базе данных могут постоянно меняться, а это, в свою очередь, приводит к сбоям в тестах. Таким образом, даже если мой класс делает то, что он намерен сделать, он потерпит неудачу, потому что база данных возвращает больше клиентов, которых она имела, когда я изначально написал тест.
[Test]
public void GetAllCustomersCount()
{
DAL d = new DAL();
Assert.AreEqual(249, d.GetCustomerCount());
}
У вас есть какие-либо советы по написанию тестов, которые не зависят от окружающей среды?
Но тогда вы не являетесь модульным тестированием, вы являетесь интеграционным тестированием. –