У меня есть этот модульный тест:
[Test]
public void ProcessDbFile_should_delete_file_if_it_exists_then_copy_new_file_to_same_location()
{
// used to create condition where file already exists
if (!File.Exists(path2))
File.Create(path2);
_dbInstaller.ProcessDbFile(path1);
File.Exists(path2).ShouldBe(true);
errorReceived.ShouldBe(null);
}
что происходит, когда я попадаю в эту часть внутри процедуры ProcessDbFile:
if (File.Exists(path2))
_dbDropper.DropDb();
, которая затем переходит к этому:
public bool DropDbStub()
{
try
{
File.Delete(@"c:\dbdata\data.mdf");
}
catch
{
return false;
}
return true;
}
Я получаю исключение, что файл используется другим процессом.
Думаю, мой главный вопрос - это модульное тестирование отдельного процесса?
Если я закомментируюпервые 2 строки модульного теста:
// if (! File.Exists (path2)) // File.Create (path2);
Я не получаю исключения, даже еслифайл уже там, удаление происходит, как и планировалось, только тогда, когда у меня есть эти первые 2 строки в модульных тестах (и он действительно переходит в строку Create, каким-то образом модульный тест, похоже, блокирует файл. Что я могусделать, чтобы преодолеть это, чтобы тест продолжал работать как надо, то есть проверить удаление файла, если он уже существует, и сначала создать его, если он еще не существовал?