这是一个“设计/架构”问题,因此您无需向我提供技术细节。
我可以整天在互联网上找到示例,说明如何运行xunit单元测试,记录测试结果,以及如何显示成功或失败,但互联网上的每个示例都是硬编码的,没有人显示如何有效地存储测试用例(nunit或junit),以便可以构建数百或数千个测试并将其加载到测试引擎中。
我认为这可以使用XML文件或数据库表完成。您是否可以分享您认为存储将由测试代码加载的测试的最佳方法?我需要能够编写一个测试框架,最终将为典型的Web工作流应用程序进行数千次测试,我希望以正确的方式进行。
也许在“Google高级搜索”页面的单元测试环境中描述您的答案,该页面有很多选项,有数百种变体等。
答案 0 :(得分:1)
我同意这里重要的是保持简单,让它“自然地”成长。测试与其他代码一样重要,并且应该像强烈重构一样重构。
如果你所谈论的是实际的单元测试(与从UI到数据库测试整个堆栈的集成测试相反),保持在解决方案中运行它们所需的一切非常重要,这样开发人员在更新源文件时总会有最新的东西。此外,您应该针对一个没有惊险的设置场景,新开发人员可以从版本控制系统获取源文件并运行测试而无需设置。
RowTest功能非常适合简单的场景,但是如果您正在处理复杂场景,则应该查看Test Data Builder模式,该模式允许您定义默认场景,然后定义这些场景的变体。
我喜欢尽可能接近测试的测试数据,这样我就能真正看到测试中发生了什么。因此,我认为问题不在于您是应该使用XML还是数据库,它们只是用于表示数据的不同格式,而是您是否真的想要将测试数据与测试分开?
答案 1 :(得分:0)
如果你正在进行“数据驱动测试”,那么你应该看一下RowTest方法和等价物。 NUnit从MBUnit借用了它。 xUnit似乎通过Theory and PropertyData提供了更加可扩展的解决方案,您无需在代码中指定输入;您可以从任意函数,电子表格或SQL Server数据库生成输入。
我从来没有对Rowtest方法有任何需要(这也很少见)..所以不能警告你任何龙。或者,如果您不能采用上述方法,您甚至可以使用Fit / Fitnesse来执行此操作;虽然技术上不是验收测试。
对于'测试框架',也许YAGNI也许你这样做。开始使用,从小做起,保持简单,随着时间的推移增加测试设计。