代码之家  ›  专栏  ›  技术社区  ›  BigBrother

用于单元测试的测试数据文件的路径

  •  53
  • BigBrother  · 技术社区  · 16 年前

    我目前正在VS2008中使用标准的Microsoft单元测试套件。还安装了ReSharper 4.5。我的单元测试依赖于预加载数据文件的TestInitialize方法。此测试数据文件的路径将有所不同,这取决于我是否使用标准的Ctrl-R+Ctrl-T命令和Resharper单元测试执行命令在VS2008中运行单元测试。

    更新:

    测试数据的大小足够大,因此我不想将其放入字符串中,因此宁愿将其作为外部文件保存。我的测试项目的文件结构是使用MVC应用程序创建的标准单元测试项目的文件结构。在测试项目的根目录下,创建了一个名为“测试数据”的新文件夹。无论测试运行程序如何,我都希望访问此文件夹。

    3 回复  |  直到 16 年前
        1
  •  91
  •   Mikael Svenson    16 年前

    您是说测试文件的位置会因测试运行程序的不同而有所不同,所以我假设它包含在项目中,并与dll一起复制。

    string path = AppDomain.CurrentDomain.BaseDirectory;
    

    [编辑]

    在VisualStudio中。

    再竖琴->选项->工具->单元测试->从指定文件夹运行结果(或更改测试项目的项目输出文件夹)

    您可以在其中指定测试数据的文件夹,或相对于指定的文件夹。

        2
  •  23
  •   DaniCE    9 年前

    (原始答案更新为也接受.net核心多目标项目输出路径)

    public static string GetTestDataFolder(string testDataFolder)
    {
        string startupPath = ApplicationEnvironment.ApplicationBasePath;
        var pathItems = startupPath.Split(Path.DirectorySeparatorChar);
        var pos = pathItems.Reverse().ToList().FindIndex(x => string.Equals("bin", x));
        string projectPath = String.Join(Path.DirectorySeparatorChar.ToString(), pathItems.Take(pathItems.Length - pos - 1));
        return Path.Combine(projectPath, "Test_Data", testDataFolder);
    }