【问题标题】:Customizing the NUnit GUI for data-driven testing为数据驱动测试定制 NUnit GUI
【发布时间】:2011-02-09 05:55:04
【问题描述】:

我的测试项目包含一组输入数据文件,这些文件被输入到一个遗留的第三方软件中。由于这个软件的输入数据文件很难构建(不是故意可以做的),我不打算添加新的输入数据文件。

每个输入数据文件都将受到一组“测试函数”的约束。一些测试函数可以独立调用。其他测试函数代表顺序操作的各个阶段 - 如果前面的阶段失败,则不需要执行后续阶段。

我已经尝试过 NUnit 参数化测试用例(TestCaseAttribute 和 TestCaseSourceAttribute),将数据文件列表作为测试用例传入。我通常对选择输入数据进行测试的能力感到满意。

但是,我想看看是否可以自定义其 GUI 的树形结构,使“测试函数”成为“输入数据”的子项。例如:

  • 文件 #1
    • CheckFileTypeTest
    • GetFileTopLevelStructureTest
    • 完成过程测试
      • StageOneTest
      • StageTwoTest
      • 第三阶段测试
  • 文件 #2
    • CheckFileTypeTest
    • GetFileTopLevelStructureTest
    • 完成过程测试
      • StageOneTest
      • StageTwoTest
      • 第三阶段测试

这对于识别在处理特定输入文件期间失败的阶段很有用。

是否有任何提示和技巧可以启用新的树形布局?我是否需要自定义 NUnit 才能获得此布局?

已编辑:请参阅问题Term for unit testing that separates test logic from test result data,了解分离测试数据和测试代码的概念。在我的情况下,分离是出于实际考虑,而不是出于意识形态原因。我的测试数据文件的来源是“在野外”。

数据驱动测试的其他轶事用途:

【问题讨论】:

  • 很确定 NUnit 的 GUI 根本不提供任何自定义(或者充其量是非常有限的)。你必须自己写。
  • 在测试中 GUI 是你的敌人,而不是朋友 :) 然而,你可以做的是在测试完成后转换 XML 输出,然后将其转换为格式良好的 HTML。我以前这样做是为了隐藏一些测试,更改它们的名称等。顺便说一句,gallio.org + MbUnit 比 NUnit 好得多,我发誓!
  • @rwong 我将把它迁移到 StackOverflow。这个问题对 Programmers.SE 来说太客观了,你可能会有更好的机会在那里得到答案。

标签: nunit


【解决方案1】:

您可能无法完全像这样对结构进行建模。测试只能存在于 TestFixtures(类)中,并且唯一允许您在 GUI 中嵌套任意级别的是命名空间。

你可以这样做:

* File001 (namespace)
  * Tests_File001 (class, text fixture)
    * CheckFileTypeTest (method, test)
    * GetFileTopLevelStructureTest (method, test)
  * CompleteProcessTest (namespace)
    * TestsCompleteProcessTest (class, text fixture)
      * StageOneTest (method, test)
      * StageTwoTest (method, test)
      * StageThreeTest (method, test)

我假设您目前的设置更像是

[Test]
[TestCaseSource("TestFiles")]
public void StageOneTest(String file)
{
}

其中一种测试方法检查特定事物,然后您为每个文件运行该测试。在这种情况下,您只需删除属性并从新测试中调用此方法。

我还觉得您希望您的测试以特定的顺序执行,并且不同的测试运行程序以不同的顺序执行您的测试。我不知道有任何方法可以做到这一点,一般来说你不应该这样做。任何测试都不应该依赖于另一个成功的测试。

假设您的测试有点耗时,并且如果“早期”测试已经失败,您不想运行所有“后期”测试,您可以考虑将它们归入适当的类别,例如:“初步”、“第 1 阶段”等。然后您可以一个接一个地执行一个类别,看看第一个失败的地方。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2011-05-01
    • 2012-05-18
    • 2012-11-05
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多