Unit testing NUnit:单元测试,关于存储测试数据文件的建议

Unit testing NUnit:单元测试,关于存储测试数据文件的建议,unit-testing,junit,nunit,mstest,Unit Testing,Junit,Nunit,Mstest,我已经开始开发一个基于OpenXml的引擎,我们正在使用大量的pptx文件进行测试。我们不希望这些文件存储在源代码管理中。这方面有什么建议吗。可能存储在网络共享或映射驱动器等中?为什么不将测试文件存储在源代码管理中?很明显,测试是测试套件的一部分,因此它们属于测试 可以这样想:编写测试是为了发现代码是否有问题。如果代码现在通过了测试,那么如果更改代码本身或测试(包括驱动测试的测试文件),代码可能会失败。因此,您希望将测试文件与测试一起保存在源代码管理中,这样您就可以控制到底执行了哪些测试 随着时

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

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

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


随着时间的推移,您可能会更改这些文件以更好地反映需求中的更改。此时,您不想处理测试文件的哪个版本属于源代码/测试代码的哪个版本,如果单独保存它们,就会发生这种情况。存储它们的逻辑位置是在版本控制中。这样,您就可以修改它们,而不用担心破坏以前版本的测试代码。将它们存储在网络共享上将一直是问题的根源。您的版本控制系统将记录文件的每一次更改以及更改者。您的网络共享不太可能提供类似的功能。如果您关心文件的大小,以及您的版本控制系统是否能够应对,获得一个像样的版本控制系统。

为什么不想将文件存储在源代码管理中?我不想让SCM因为二进制文件而变得更大。我们对测试所需的外部文件所做的一件事就是将文件作为嵌入式资源嵌入测试程序集中。唯一的缺点是组件可能会变得相当大,但我们还没有发现这是一个主要问题。当然,在知道测试程序集的所有依赖项都可以在其内部解析的情况下移动测试程序集要比担心一组外部文件要好。为什么需要移动测试程序集?我们使用TeamCity来构建我们的工件,它将它们拉大并在不同的构建中移动,这样我们就不需要不断地重新构建源代码。通过将测试工件放置在测试程序集中,我们就不需要将这些工件与测试程序集一起复制。只是另一件可能出错的事。谢谢。。我希望它脱离SCM的唯一原因是二进制文件可能会使SCM变得更大。但你的观点是正确的:)除非你有巨大的二进制文件和大量的二进制文件,否则现在磁盘空间应该不是问题