visual-studio - 使用输入文件进行单元测试

标签 visual-studio unit-testing

全部:
我有一个单元测试,它正在测试需要输入文件的功能。该测试是使用VS 2008的内置单元测试功能构建的。

我的问题是文件需要由单元测试发现。但是,测试运行时,它从测试结果文件夹下的临时“输出”目录运行。它找不到我的输入文件。

我已将文件添加到单元测试项目中,编译操作为“无”,复制到输出目录选项为“如果较新则复制”,但是复制发生在普通的VS输出目录(在bin下),并且不在单元测试执行目录中,因此找不到该文件。我不想对文件的路径进行硬编码,因为该测试应该为 checkout 单元测试的任何人运行。我可以将输入文件放在解决方案文件夹中,然后通过对后备树的相对路径进行硬编码来使测试代码“发现”该文件,但是我认为这必须是一个常见问题,因此我想检查一下是否丢失了一些东西。

最佳答案

将文件作为资源添加到测试程序集中。然后,您可以在运行时通过测试设置中的Assembly.GetManifestResourceStream加载它。

这是我用来加载资源的便捷方法:

public static class ResLoader
{        
    public static string AsString<T>(string resName)
    {
         using (var reader = new StreamReader(Assembly.GetAssembly(typeof(T))
                                .GetManifestResourceStream(resName)))
        {
            return reader.ReadToEnd();
        }
    }
}

T是测试程序集中包含的任何类。

关于visual-studio - 使用输入文件进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1567635/

相关文章:

symfony - 使用 phpStorm 在 Symfony 3.2.4 中进行功能测试

c# - visual studio中的 "File has no header"构建警告是什么意思

visual-studio - ASP.NET MVC 查看代码格式 - 大括号 <% } %>

java - 从 @ComponentScan 中排除测试类中的配置

c# - 在 Visual Studio 2010 中进行单元测试 (c#)。我做错了什么?测试总是失败

c# - 无法使用 Rhino Mocks 为内部类型创建 Mock 类

java - Spring应用程序运行但无法在测试中创建bean

javascript - 哪些控制台命令会将 JavaScript 项目构建到 .appx Windows 8 Metro 应用程序中?

c++ - std::cout 与 Visual Studio 2015 上的 Android NDK

visual-studio - 通过 Visual Basic 将 Set-AWScredential 与 PS 结合使用