有没有人遇到过适用于以下逻辑的 SVN 预提交钩子(Hook)?
如果“MyClass.java”已被修改并正在提交,那么也必须按照命名约定对“MyClassTest.java”进行修改。
这里的目标是确保开发人员在更改一段代码时对相应的单元测试进行了更改。
我知道这可以通过简单地改变一点格式来欺骗。但目标不是停止作弊。这是非常强烈地鼓励正在转向它的团队中的测试驱动开发。
额外的好处是,当更改只是重构时,钩子(Hook)会忽略检查提交评论是否包含“重构”一词。 (毕竟纯重构应该始终由他们自己提交)
最佳答案
如果您想要实现的是单元测试的“强制执行”,我建议在任何类的测试覆盖率降低时检查提交后(测试确实比通常的提交操作运行得慢)。更重要的是,将该检查放入您的持续集成服务器中。
当然,这可能会导致 get 和 set 的“愚蠢”测试只是为了获得更多的覆盖率。这可以通过分配覆盖阈值来“防止”,并且仅在达到阈值时才发出警报。
通过这种方式,您可以向团队推销“如果我们犯了错误就会提醒我们的机制”的想法,而不是“如果你做错了惩罚你的机制”。
关于用于检查更改的 SVN 钩子(Hook)也对相应的测试类进行了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4310702/