单元测试解析器与大字符串输入

cs0*_*815 5 c# nunit unit-testing

我喜欢这里的建议:

所以问题

它建议使用此代码:

public class SettingsReader()
{
    public SettingsReader(System.IO.StreamReader reader)
    {
        // read contents of stream...
    }
}

// In production code:
new SettingsReader(new StreamReader(File.Open("settings.xml")));

// In unit test:
new SettingsReader(new StringReader("<settings>dummy settings</settings>"));
Run Code Online (Sandbox Code Playgroud)

我只是想知道最好的做法是"提供"大型测试字符串(即要解析的文件的几行).

Jak*_*cki 2

只需添加一个单独的文件作为程序集嵌入资源并在单元测试中加载它。

使用Assebmly.GetManifestResourceStream方法加载嵌入文件。

using (var stream = Assembly.GetExecutingAssembly()
       .GetManifestResourceStream(typeof(YourUnitTest), filename))
using(var reader = new StreamReader(stream))
{
    var fileContent = reader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)