【问题标题】:What is the best method for storing test cases that your xunit tests load from?存储 xunit 测试加载的测试用例的最佳方法是什么?
【发布时间】:2009-08-20 02:10:17
【问题描述】:

这是一个“设计/架构”问题,因此您无需向我提供技术细节。

我可以整天在互联网上找到示例,展示如何运行 xunit 单元测试、记录测试结果以及如何显示它是成功还是失败,但是互联网上的每个示例都是硬编码的,没有人展示如何有效地存储测试用例(nunit 或 junit),从而可以构建成百上千个测试并将它们加载到测试引擎中。

我假设这将使用 XML 文件或数据库表来完成。你们中的任何人都可以分享您认为存储将由测试代码加载的测试的最佳方法吗?我需要能够编写一个测试框架,最终将为典型的 Web 工作流应用程序进行数千次测试,并且我希望以正确的方式去做。

也许在对“Google 高级搜索”页面进行单元测试的背景下描述您的答案,该页面有很多选项和数百种变体等。

【问题讨论】:

    标签: junit nunit automated-tests


    【解决方案1】:

    我同意这里重要的是保持简单,让它“自然”成长。测试与您的其他代码一样重要,应该同样积极地重构。

    如果您所说的是实际的单元测试(与您测试从 UI 到数据库的整个堆栈的集成测试相反),那么在您的解决方案中保留运行它们所需的一切是非常重要的,这样开发人员在更新源文件时将始终拥有最新的东西。此外,您应该瞄准一个简单的设置场景,新开发人员可以从版本控制系统中获取源文件并运行测试而无需设置。

    RowTest 功能非常适合简单的场景,但如果您正在处理复杂的场景,您应该查看Test Data Builder 模式,它可以让您定义默认场景以及这些场景的变体。

    我喜欢让我的测试数据尽可能接近测试,从而让我真正了解测试中发生了什么。因此,我认为问题不在于您应该使用 XML 还是数据库,它们只是表示数据的不同格式,但您是否真的想将测试数据与测试分开?

    【讨论】:

      【解决方案2】:

      如果您正在了解“数据驱动测试”,那么您应该看看RowTest 方法和等效方法。 NUnit 是从 MBUnit 那里借来的。 xUnit 似乎通过Theory and PropertyData 对此有一个更可扩展的解决方案,您不必在代码中指定输入;您可以从任意函数、电子表格或 SQL Server 数据库生成输入。

      我从来没有对 Rowtest 方法的任何需求(这也很罕见).. 所以不能警告你任何龙。或者,如果您不能执行上述方法,您甚至可以使用 Fit/Fitnesse 来执行此操作;虽然在技术上不是验收测试。

      至于“测试框架”,也许 YAGNI 可能会。开始吧,从小事做起,保持简单,随着时间的推移扩展测试设计。

      【讨论】:

        猜你喜欢
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-25
        • 1970-01-01
        • 2020-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多