Путь может быть передан конструктору или также может быть установлен с помощью метода установки. .
Существует функция readIn, которая загружает список строк текстового файла, которые можно найти по пути.
Функция должна проверять, не является ли путь нулевым или является ли он допустимым (является путь, указывающий на существующий файл). В противном случае он выдает исключение System.ArgumentNullException или новое исключение System.ArgumentException.
Когда я пытаюсь проверить, что исключения выдаются в случае, если путь имеет значение NULL или недействителен, Visual Studio всегда зависает и говорит, что у меня есть необработанное исключение, однако я определил ожидаемое исключение перед методом тестирования.
У вас есть идеи, как мне это сделать правильно?
Или, если это правильный путь (я читал об этом также здесь и на странице MSDN, так что он должен работать), что мне делать, чтобы он работал?
Класс читателя:
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.IO;
namespace LogParserConsole
{
public class FileReader
{
private string path;
private List lines;
public FileReader()
{
path = null;
lines = null;
}
public FileReader(string path)
{
this.path = path;
if (isFileExists())
{
lines = new List();
}
else
{
lines = null;
}
}
public void readIn()
{
if(path == null)
{
throw new System.ArgumentNullException("The path is not set. Please set a path first!");
}
else if(!isFileExists())
{
throw new System.ArgumentException("The given path is invalid, please chek it!");
}
string line;
System.IO.StreamReader file = new System.IO.StreamReader(path);
while ((line = file.ReadLine()) != null)
{
lines.Add(line);
Console.WriteLine(line);
}
file.Close();
}
public bool isFileExists()
{
return File.Exists(path);
}
public string getPath()
{
return this.path;
}
public List getLines()
{
return this.lines;
}
public void setPath(string path)
{
this.path = path;
}
}
}
Код: Выделить всё
[TestMethod]
[ExpectedException(typeof(System.ArgumentNullException))]
public void ReadInTest()
{
FileReader fr = new FileReader();
fr.readIn();
}
Это произошло с этим простым примером кода:
Код: Выделить всё
[TestMethod, ExpectedException( typeof ( ApplicationException ) ) ]
public void ut1()
{
throw new ApplicationException();
}
Спасибо за совет!
Подробнее здесь: https://stackoverflow.com/questions/418 ... oesnt-work