【问题标题】:Delay-loading TestCaseSource in NUnit在 NUnit 中延迟加载 TestCaseSource
【发布时间】:2011-04-29 05:07:00
【问题描述】:

我有一些使用 TestCaseSource 函数的 NUnit 测试。不幸的是,我需要的 TestCaseSource 函数需要很长时间来初始化,因为它递归地扫描文件夹树以查找将传递给测试函数的所有测试图像。 (或者,它可以在每次运行时从文件列表 XML 加载,但仍然需要自动发现新的图像文件。)

是否可以将 NUnit 属性与 TestCaseSource 一起指定,这样 NUnit 不会枚举测试用例(不调用 TestCaseSource 函数),直到用户单击节点或运行测试套件?

需要获取存储在文件夹中的所有测试图像是项目要求,因为无权访问测试项目的其他人需要将新的测试图像添加到文件夹中,而无需修改测试项目的源代码.然后他们将能够查看测试结果。

一些教条式的单元测试人员可能会反驳说我使用 NUnit 来做一些不应该做的事情。我不得不承认我必须满足一个要求,而 NUnit 是一个很棒的工具,它的 GUI 可以满足我的大部分要求,所以我不在乎它是否是正确的单元测试。

其他信息(来自 NUnit 文档)

对象构造注意事项

NUnit 将测试用例定位在 加载测试时,创建 每个类的实例 非静态来源并建立一个列表 要执行的测试。每个来源 对象仅在此创建一次 时间并在所有测试后被销毁 已加载。

如果数据源在测试中 夹具本身,对象被创建 使用适当的构造函数 上提供的夹具参数 TestFixtureAttribute 或默认值 没有参数的构造函数 指定的。由于这个对象是 在运行测试之前销毁,否 之间可以通信 这两个阶段 - 或之间 不同的运行 - 除了通过 参数本身。

似乎预先加载测试用例的目的是避免在 TestCaseSource 和测试执行之间产生通信(或副作用)。这是真的?这是要求预先加载测试用例的唯一原因吗?

注意:

需要修改 NUnit,如 http://blog.sponholtz.com/2012/02/late-binded-parameterized-tests-in.html 中所述

计划将此选项引入到更高版本的 NUnit。

【问题讨论】:

    标签: nunit delay-load testcasesource


    【解决方案1】:

    我不知道在 GUI 中延迟加载测试名称的方法。我的建议是将这些测试移到单独的程序集中。这样,您可以快速运行所有其他测试,并仅在需要时加载速度较慢的详尽测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 2011-03-14
      相关资源
      最近更新 更多