I created a unit test for a method of my project. That method raises an exception when a file is not found. I wrote a unit test for that, but I'm still not able to pass the test when the exception is raised.
Method is
public string[] GetBuildMachineNames(string path)
{
string[] machineNames = null;
XDocument doc = XDocument.Load(path);
foreach (XElement child in doc.Root.Elements("buildMachines"))
{
int i = 0;
XAttribute attribute = child.Attribute("machine");
machineNames[i] = attribute.Value;
}
return machineNames;
}
Unit Test
[TestMethod]
[DeploymentItem("TestData\\BuildMachineNoNames.xml")]
[ExpectedException(typeof(FileNotFoundException),"Raise exception when file not found")]
public void VerifyBuildMachineNamesIfFileNotPresent()
{
var configReaderNoFile = new ConfigReader();
var names = configReaderNoFile.GetBuildMachineNames("BuildMachineNoNames.xml");
}
Should I handle the Exception in the method or am I missing something else??
EDIT:
The path I am passing is not the one to find the file, so this test should pass... i.e. what if file not exists in that path.
In your unit test it seems that you are deploying an xml file:
TestData\BuildMachineNoNames.xml
which you are passing to theGetBuildMachineNames
. So the file exists and you cannot expect aFileNotFoundException
to be thrown. So maybe like this: