Wie rwwilden suggeriert, ist das Leben viel einfacher, wenn Sie eine stream-basierte API anstelle einer dateinbasierten verwenden. Spott zu spielen ist hier nicht besonders angebracht, IMO; Sie tun nicht "Protokolltest" - Sie wollen nur eine Datenquelle.
Sie können auch eine Überlastung schaffen, die eine einfache Dienstprogramm Methode ist:
public Result ParseXml(string file)
{
using (Stream stream = File.OpenRead(file))
{
return ParseXml(stream);
}
}
Sie könnte dann einigermaßen sicher nicht Test, dass Verfahren - es darin keine signifikante Logik hat, nachdem alle.
Jetzt Sie konnte Test der Stream-basierte API durch eine hartcodierte Zeichenfolge in Ihrem Code verwenden, dann Encoding.UTF8.GetBytes(xml)
Aufruf und der Aufbau einer MemoryStream
um das resultierende Byte-Array ... aber ich ziehe es generell separate Datendateien verwenden in meinem Testprojekt. Setzen Sie den Inhaltstyp auf "eingebettete Ressource" und verwenden Sie dann Assembly.GetManifestResourceStream
, um einen Stream zur Testdatei zu erhalten.
Wenn das wirklich eine normale XML-Datei ist, wollen Sie das Parsing wirklich selbst machen? Gibt es einen Grund, warum Sie das dem Framework nicht überlassen wollen, und Ihre API entweder in Bezug auf die DOM API, LINQ to XML oder XmlReader
ausdrücken?
Für jeden anderen, der darüber verwirrt ist, wie der Pfad hier funktioniert, scheint er ungefähr so zu sein: 'Your.Project.Name.SubFolder.FileName.extension'. – crush