Unit testing 如何在单元测试中使用外部数据?

Unit testing 如何在单元测试中使用外部数据?,unit-testing,tdd,nunit,Unit Testing,Tdd,Nunit,我有很多单元测试,需要很多txt、数据、html等文件。外部存储这些文件使更新测试用例、添加新测试用例等变得更加容易 然而,单元测试中的依赖性在不同的系统和不同的测试运行程序中带来了很多麻烦 最佳实践是什么 外部存储它们和 在中相对链接这些文件 密码?(在某些方面造成问题) 测试跑步者,或需要额外的 配置) 将所有这些文件嵌入到 单元测试DLL并从中读取 (使创建测试更加困难) 以硬编码方式存储 位置(显然造成了这么多 签出代码时出现的问题 在另一个地方) 如何解决这个问题?我的做法是将测试资源

我有很多单元测试,需要很多txt、数据、html等文件。外部存储这些文件使更新测试用例、添加新测试用例等变得更加容易

然而,单元测试中的依赖性在不同的系统和不同的测试运行程序中带来了很多麻烦

最佳实践是什么

  • 外部存储它们和 在中相对链接这些文件 密码?(在某些方面造成问题) 测试跑步者,或需要额外的 配置)
  • 将所有这些文件嵌入到 单元测试DLL并从中读取 (使创建测试更加困难)
  • 以硬编码方式存储 位置(显然造成了这么多 签出代码时出现的问题 在另一个地方)

  • 如何解决这个问题?

    我的做法是将测试资源嵌入单元测试程序集中,并使用


    NUnit测试无论如何都是面向夹具的,因此一旦设置了夹具(即,一组特定的资源),添加额外的测试就很容易了。

    我在测试项目中使用一个本地文件夹,并使用如下代码获取测试文件:

    public static FileInfo GetTestFileInfo(string fileName)
    {
        var dir = AppDomain.CurrentDomain.BaseDirectory;
        return new FileInfo(dir + @"\..\..\TestData\" + fileName);
    }
    

    哦,是的,我正在使用MbUnit。

    请为选项编号。子弹让人困惑。您在测试跑步者中遇到了什么问题?您在谈论什么“额外”配置?为什么选项1如此糟糕?你能提供具体的问题吗?有时候nUnit无法使用,我无法隔离版本或配置。但主要问题是,当“工作目录”发生更改时,有时会再也找不到相关文件。AFAIK MBUnit支持工作目录选项。我认为nUnit做了一些尴尬的事情,尽管我刚刚注意到如果我将它保留为“TestData\xxx.txt”,它会工作。至少现在是这样。我试图获取当前目录。