【问题标题】:Managing test data for Junit tests管理 Junit 测试的测试数据
【发布时间】:2010-06-10 16:52:12
【问题描述】:
我们在管理测试数据(用于创建模拟对象的 xmls)方面面临一个问题。我们目前拥有的数据已经经过很长一段时间的演变。每次我们添加新功能或测试用例时,我们都会添加新数据来测试该功能。
现在,问题是当业务需求更改格式(如变量的长度或格式)或测试数据不支持的任何更改时,我们需要更改大小为 100 MB 的整个测试数据。
任何人都可以提出更好的方法或流程来克服这个问题吗?任何建议将不胜感激。
【问题讨论】:
标签:
java
unit-testing
testing
junit
【解决方案1】:
就个人而言,我不会在测试用例之外的任何地方为测试用例创建数据。与其创建测试数据,不如创建允许在每个测试用例或每个 before 块中快速生成对象的数据生成器。
这有两个主要优点:
- 它使测试更易于阅读,因为开发人员可以准确地看到正在使用的对象,并且
- 它应该会大大减少您需要管理的测试数据量。
为功能和集成测试之类的事情保留测试数据,并使用 DBDeploy 之类的工具来管理这些数据。此数据需要有意保持较小。 DBDeploy 和 DBUnit 的使用允许在每个测试或测试套件之前清理数据库。这也应该限制您需要的数据量,因为它大大增加了数据重用。
【解决方案2】:
虽然这不是您问题的完整解决方案,但肯定会有所帮助(尤其是在您的情况下,因为您有 100 MB 的数据)- 基于 行为验证 而不是 数据验证。
Martin Fowler 有一篇很好的文章here