【问题标题】:NUnit: Unit testing, recommendations on storing test data filesNUnit:单元测试,关于存储测试数据文件的建议
【发布时间】:2012-05-21 10:51:55
【问题描述】:

我已经开始研究基于 OpenXml 的引擎,并且我们使用大量 pptx 文件进行测试。我们不希望这些文件存储在源代码管理中。对此有什么建议吗?可能存储在网络共享或映射驱动器等中?

【问题讨论】:

  • 为什么不想将文件存储在源代码管理中?
  • 我不希望 SCM 增长更多的二进制文件

标签: unit-testing junit nunit mstest


【解决方案1】:

为什么不将测试文件存储在源代码管理中?显然,它们是测试套件的一部分,因此它们属于测试。

这样想:您编写测试以发现您的代码是否有问题。如果代码现在通过了测试,那么如果您更改代码本身或测试(包括驱动测试的测试文件),它可能会失败。因此,您希望将测试文件与测试一起保存在源代码管理中,这样您就可以控制准确执行的测试。

随着时间的推移,您可能会更改这些文件以更好地反映需求的变化。在这一点上,您不想纠结哪个版本的测试文件属于哪个版本的源/测试代码,如果您将它们分开保存就会发生这种情况

【讨论】:

  • 谢谢.. 我希望它脱离 SCM 的唯一原因是二进制文件可能会使 SCM 变得更大。但你的观点是有效的:)
  • 除非你有 huge 二进制文件和大量的二进制文件,现在磁盘空间应该不是问题
【解决方案2】:

存储它们的逻辑位置是在版本控制中。这样您就可以修改它们,而不必担心破坏以前版本的测试代码。将它们存储在网络共享上将经常导致问题。您的版本控制系统将记录对文件的每一次更改以及所做的更改。您的网络共享不太可能提供类似的设施。如果你担心文件的大小,以及你的版本控制系统是否能应付,那就买一个像样的版本控制系统。

【讨论】:

  • 我们对测试中需要的外部文件做的一件事是将文件作为嵌入式资源嵌入到测试程序集中。唯一的缺点是组件可能会变得很大,但我们还没有发现这是一个主要问题。当然,能够移动测试程序集,知道它的所有依赖项在自身内部都是可解析的,而不是还要担心一组外部文件。
  • 为什么需要移动测试程序集?
  • 我们使用 TeamCity 来构建我们的工件,它将它们压缩并在各种构建中移动它们,这样我们就不需要不断地重新构建源代码。通过将测试工件放置在测试程序集中,我们就不需要将这些工件与测试程序集一起复制。只是另一件可能出错的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 2010-11-12
  • 2011-10-02
  • 2015-04-29
相关资源
最近更新 更多