Я пытаюсь написать модульный тест, чтобы убедиться, что метод записывает в текстовый файл. Мой метод записывается в текстовый файл MovieList.txt
. Я продолжал ошибаться, говоря, что он не может получить доступ к файлу, потому что он используется другим процессом. Поэтому я попытался изменить метод, чтобы принять параметр для записи в другой текстовый файл, MovieListTEST.txt
, но я все еще не могу понять. Кто-нибудь знает, как правильно это сделать?Единичный тест для написания текстового файла
Это мой код для записи в файл:
public bool WriteMovieListToFile()
{
try
{
FileStream fs = new FileStream("MovieList.txt", FileMode.Append, FileAccess.Write);
StreamWriter textWriter = new StreamWriter(fs);
textWriter.WriteLine(movie.Title);
textWriter.WriteLine(movie.Genre);
textWriter.WriteLine(movie.Actor);
textWriter.WriteLine(movie.Year);
textWriter.Close();
return true;
}
catch (Exception ex)
{
Console.WriteLine("Error:" + ex.Message);
return false;
}
}
Edited с парами:
public bool WriteMovieListToFile(string fileLocation)
{
try
{
FileStream fs = new FileStream(fileLocation, FileMode.Append, FileAccess.Write);
StreamWriter textWriter = new StreamWriter(fs);
Это мой блок код теста:
/// <summary>
///A test for WriteMovieListToFile
///</summary>
[TestMethod()]
public void WriteMovieListToFileTest1()
{
Movie movie1 = new Movie("Title", "Genre", "Actor", "Year");
movieSystem.AddMovie(movie1);
movieSystem.WriteMovieListToFile("MovieListTEST.txt");
var fileText = File.ReadLines("MovieListTEST.txt");
Assert.IsTrue(fileText.ToString().Length > 1);
}
Нужно ли закрывать FileStream? –
Окружайте объект 'FileStream' внутри блока' using', и вы убьете двух зайцев одним выстрелом. Объект 'FileStream' по-прежнему активен в памяти и блокирует ваш файл. – Andrew
@ Andrew Я уверен, что это ответ – aguertin