【问题标题】:How to use external data in Unit Tests?如何在单元测试中使用外部数据?
【发布时间】:2009-06-23 15:25:53
【问题描述】:

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

但是,在单元测试中存在依赖关系会给不同的系统和不同的测试运行者带来很多麻烦。

最佳做法是什么?

  1. 外部存储它们和 相对链接这些文件 编码? (导致一些问题 测试运行器,或需要额外的 配置)
  2. 将所有这些文件嵌入到 单元测试 dll 并从那里读取 (让创建测试变得更加困难
  3. 以硬编码存储 位置(显然造成了这么多 查看代码时的问题 在不同的地方

你如何解决这个问题?

【问题讨论】:

  • 请给选项编号。子弹令人困惑。您在测试运行程序中遇到了什么问题,您在谈论什么“额外”配置?为什么选项 1 如此糟糕?能否提供具体问题?
  • 它有时不适用于nUnit,我无法隔离版本或配置。但主要问题是当“工作目录”发生变化时,有时它无法再找到相关文件。

标签: unit-testing tdd nunit


【解决方案1】:

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

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

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

【讨论】:

  • AFAIK MBUnit 支持工作目录选项。我认为 nUnit 正在做一些尴尬的事情,尽管我只是注意到如果我将它留在“TestData\xxx.txt”中它会起作用。至少现在。我试图获取当前目录。
【解决方案2】:

我的做法是将测试资源嵌入到单元测试程序集中,然后使用GetManifestResourceStream 将其拉出。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 2010-11-08
    • 2020-10-27
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多