什么是处理测试,临时文件和版本控制的正确方法

时间:2015-01-31 15:57:13

标签: ruby git testing version-control

我使用Ruby编写代码,使用Cucumber和Rspec测试它,并使用Gi​​t控制版本。但这里有一些不清楚的事情。例如。临时文件,由测试创建。我不希望每次提交都跟踪他们的更改。 那么,我应该采用什么方式:

  1. 在项目文件夹中找到临时文件,并使用一些Git技巧忽略更改。 gitignore没用,因为在测试开始时我需要一些文件。
  2. /tmp中找到临时文件。但是,它给测试环境带来了一些不清楚的结果。
  3. 还有其他方法可以处理吗?

3 个答案:

答案 0 :(得分:4)

测试开始时所需的文件应该在源代码管理中。理想情况下,您希望测试创建的临时文件位于一个目录中,以便您可以忽略整个目录。如果那不可能,那么将每个文件添加到.gitignore文件中。实际上,在测试结果之外,您的规范应该自行清理,其中应包括删除测试期间创建的临时文件。

答案 1 :(得分:1)

  

gitignore没用,......

gitignore 应该在这里有用:

  • 您可以将这些临时文件限制在repo中的专用文件夹中,并且可以忽略该文件夹;
  • 或者您可以通过扩展名或命名约定来识别这些临时文件,并且可以通过名称模式忽略它们。

答案 2 :(得分:1)

Ruby有creating temp files and directories and cleaning them up for you的工具,使用它。它将为当前环境选择正确的临时文件位置,可能在您的存储库之外,您再也不用担心它们了。虽然测试的经验法则是不在源目录之外写入文件,但使用全局临时目录是可接受且可靠的。

否则,在项目中创建临时目录(可能在测试目录中)并将所有临时文件放在那里。设置.gitignore以忽略该目录。这具有轻微的优势,可以将测试工件完全保留在源目录中,并且您可以更轻松地找到它们以进行调试。你仍然应该使用Ruby的Tempfile类来管理它们,只是告诉它使用你的临时目录,处理清理并确保你的临时名称是唯一的,以允许并行测试。

我建议只使用Tempfile.new吐出的任何内容。记住设置特殊测试临时目录是一个你不需要的移动部分。