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



我用Ruby编写代码,用Cucumber和Rspec测试它,用Git控制版本。但对我来说,这里有一些不清楚的事情。例如,由测试创建的临时文件。我不想在每次提交时跟踪他们的更改。那么,我应该使用什么方法:

  1. 在项目文件夹中找到临时文件,并使用一些 Git 技巧来忽略更改。 gitignore没有用,因为当测试开始时,我需要一些文件放在那个位置。
  2. /tmp中找到临时文件。不过,它给测试环境带来了一些不清楚的地方。
  3. 还有其他方法可以解决这个问题吗?

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

gitignore没有用,...

gitignore在这里应该很有用:

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

Ruby 具有创建临时文件和目录并为您清理它们的工具,请使用它。 它将为当前环境选择临时文件的正确位置,可能远远超出您的存储库,您再也不用担心它们了。 虽然测试的经验法则是不要在源目录之外写入文件,但使用全局临时目录是可以接受且可靠的。

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

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

最新更新