您如何管理项目中的单元测试文件?你在git中添加它们吗?

Ars*_*ham 3 php git phpunit unit-testing

如何在项目中管理PHPUnit文件?
你把它添加到你的git存储库还是忽略它们?
你在PHPdocs代码中使用@assert标签吗?

Jon*_*fer 5

建立

我目前没有使用php,但我正在使用git中的python 单元测试sphinx文档.我们将测试添加到git,甚至对测试传递有一定的要求,推送到远程develmaster分支(master比硬devel).这确保了一点代码质量(测试覆盖率也应该被评估,但那还没有实现:)).

我们将测试文件放在它们所属目录顶级源目录旁边的单独目录中,前缀为test_,以便单元测试框架自动找到它们.

对于类似的文档,我们只是将sphinx docs文件放入它们自己的子目录(docs)中,在我们的例子中是一个独立的git子模块,将来可能会更改.

合理

  • 我们希望能够跟踪测试中的变化,因为它们应该很少见.频繁的更改表明代码不成熟.

  • 其他团队成员需要访问测试,否则他们没用.如果他们在某些地方更改代码,他们必须能够验证它不会破坏任何内容.

  • 文档属于代码.在python的情况下,代码直接包含文档.因此,我们必须将它们保持在一起,因为文档是从代码生成的.

  • 在存储库中安装测试和文档可以在远程服务器上进行自动化测试和文档构建,从而为我们提供即时更新的文档和测试反馈.此外,基于测试结果的"代码质量"限制的实现以这种方式工作(它实际上更多地提醒人们运行测试,因为代码质量无法通过测试来检查而不查看测试覆盖率).如果测试没有通过,则git服务器会拒绝引用.

    我们例如要求打开master,所有测试都必须通过或被跳过(遗憾的是,我们需要跳过,因为有些测试需要OpenGL,这在无头上是不可用的),而devel如果测试只是"表现得像预期的那样"(即传递,跳过或预期失败,没有意外的成功,错误或失败).