В настоящее время я пытаюсь изучить правильный unit тест. Итак, теперь я пытаюсь написать unit-тесты для класса, который должен отображать данные из XML файла в соответствующие объекты. Конечно, вся функциональность класса зависит от существования соответствующего XML файла. XML файл загружается в конструктор класса.
Я использую С# с NUnit. Пока у меня два теста:
[Test]
public void ShouldAllowInstanceToBeCreatedWhenXMLFileIsPresent()
{
if (File.Exists(SettingsReader.XML_SETTINGS_PATH))
{
SettingsReader settingsReader = new SettingsReader();
Assert.AreNotEqual(null, settingsReader);
}
}
[Test]
[ExpectedException("Telekanzlei.Clientmanager.XMLDataLayer.XMLFileNotFoundException")]
public void ShouldThrowExceptionWhenXMLFileIsNotPresent()
{
if (!File.Exists(SettingsReader.XML_SETTINGS_PATH))
{
SettingsReader settingsReader = new SettingsReader();
}
else
throw new XMLFileNotFoundException();
}
Я не уверен, что проверка наличия файла в тесте - это правильный способ, поэтому любые предложения по этим тестам тоже приветствуются. Но мой вопрос в том, как продолжить следующие тесты. Очевидно, что все последующие тесты будут терпеть неудачу, если XML файл отсутствует.
Итак, я предполагаю, что XML файл присутствует, имея в виду, что неудачный тест может означать, что это не так? Это мне не показалось бы.
Существует ли общий шаблон для решения такой проблемы?
спасибо для любой помощи
edit: переписал второй тест, так как он потерпел неудачу, если файл действительно присутствовал...
edit2: Может ли это помочь вам рассказать, что на самом деле делает SettingsReader. Пока это выглядит так:
public class SettingsReader
{
public static readonly string XML_SETTINGS_PATH = "C:\\Telekanzlei\\Clientmanager_2.0\\Settings.xml";
public XElement RootXElement { get; private set; }
public SettingsReader()
{
if (!File.Exists(XML_SETTINGS_PATH))
throw new XMLFileNotFoundException();
using (var fs = File.OpenRead(XML_SETTINGS_PATH))
{
RootXElement = XElement.Load(fs);
}
}
}
Я не уверен, но я думаю, что StreamReader не был бы здесь, не так ли?