记住在提交之前运行测试

Koz*_*huk 6 python build-automation teamcity unit-testing

我们对代码进行了一系列不错的单元测试,这些单元测试运行时间不到2分钟.我们还使用TeamCity进行构建并在每次签入后运行测试.但是,我们仍然遇到问题,开发人员"忘记"在提交之前运行所有测试导致TeamCity失败,如果此签入在下午6点完成可能会打破一夜.

"忘记"是一个通用术语,还有一些其他常见原因,即使记住运行测试也可能导致TeamCity失败.如.

- >开发人员只检查他/她工作区中的一些修改过的文件.
- >在eclipse之外修改了一个文件,这样eclipse的团队同步透视不会将其检测为脏.

你如何在你的组织中处理这个问题?

我们正在考虑为开发人员引入"签入程序",这将是一个自动运行所有单元测试然后提交工作区中所有"脏"文件的自动化工具.你有过这种过程的经验吗?您是否了解可能有助于此过程的任何工具?我们的开发环境是使用Eclipse的PyDev插件的Python.

Grz*_*nio 6

在我们之前工作的一个团队中,我们达成协议,任何打破测试的人都会在第二天早上为整个团队购买培根三明治.它的极端,但它的工作完美!


gru*_*czy 4

对于 Mercurial,您可以使用钩子,它将运行测试并且仅允许成功推送。但这可能需要大量时间来进行推送(但开发人员无论如何都必须运行这些测试)。

或者您可以拥有自己的一组 bash 脚本,它将运行测试,然后才运行提交命令。例如,对于 django 和 svn commit,它可能看起来像这样简单:

./manage.py test && svn commit $@
Run Code Online (Sandbox Code Playgroud)

或者还有另一种方式:如果有人提交了未通过测试的代码,他将支付一些费用。很快人们就会记得进行测试,因为他们不会喜欢付钱的想法;-)