存储xunit测试加载的测试用例的最佳方法是什么?

时间:2009-08-20 02:10:18

标签: junit nunit automated-tests

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

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

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

也许在“Google高级搜索”页面的单元测试环境中描述您的答案,该页面有很多选项,有数百种变体等。

2 个答案:

答案 0 :(得分:1)

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

如果你所谈论的是实际的单元测试(与从UI到数据库测试整个堆栈的集成测试相反),保持在解决方案中运行它们所需的一切非常重要,这样开发人员在更新源文件时总会有最新的东西。此外,您应该针对一个没有惊险的设置场景,新开发人员可以从版本控制系统获取源文件并运行测试而无需设置。

RowTest功能非常适合简单的场景,但是如果您正在处理复杂场景,则应该查看Test Data Builder模式,该模式允许您定义默认场景,然后定义这些场景的变体。

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

答案 1 :(得分:0)

如果你正在进行“数据驱动测试”,那么你应该看一下RowTest方法和等价物。 NUnit从MBUnit借用了它。 xUnit似乎通过Theory and PropertyData提供了更加可扩展的解决方案,您无需在代码中指定输入;您可以从任意函数,电子表格或SQL Server数据库生成输入。

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

对于'测试框架',也许YAGNI也许你这样做。开始使用,从小做起,保持简单,随着时间的推移增加测试设计。