Unit testing 如果可以';您不能更改其他文件吗?

Unit testing 如果可以';您不能更改其他文件吗?,unit-testing,dependencies,break,Unit Testing,Dependencies,Break,我正在做一个项目的隐形敏捷开发。首席程序员认为单元测试、重构等都是对资源的浪费,没有办法说服他不这样做。他的哲学是“不破不修”,我理解他的观点。他在这个项目上工作了十多年,对代码了如指掌。我不想讨论开发实践 我是这个项目的新手,我的任务是添加一个新功能。我以前从事过遗留项目,使用过敏捷开发实践,效果很好,但是那些团队更容易接受这个想法,也不怕修改代码 有人告诉我,我可以使用任何我想要的开发方法,但我必须将我的更改限制在添加该特性所需的更改。我正在为我正在编写的新类使用tdd,但由于全局变量的自由

我正在做一个项目的隐形敏捷开发。首席程序员认为单元测试、重构等都是对资源的浪费,没有办法说服他不这样做。他的哲学是“不破不修”,我理解他的观点。他在这个项目上工作了十多年,对代码了如指掌。我不想讨论开发实践

我是这个项目的新手,我的任务是添加一个新功能。我以前从事过遗留项目,使用过敏捷开发实践,效果很好,但是那些团队更容易接受这个想法,也不怕修改代码

有人告诉我,我可以使用任何我想要的开发方法,但我必须将我的更改限制在添加该特性所需的更改。我正在为我正在编写的新类使用tdd,但由于全局变量的自由使用和需要交互的类中的高度耦合,我一直遇到障碍。通常,我会开始提取这些类的接口,并通过将它们作为构造函数参数或公共属性注入,使它们对全局变量的依赖性显式化

我可以说这些改变是必要的,但考虑到领导从来没有这样做过,我怀疑他会以我的方式看待这件事。我可以使用什么技术来打破这些依赖关系,而不会激怒首席开发人员

我在以下方面取得了一些进展:

  • 提取接口(用于我正在创建的新类)
  • 用测试存根扩展并覆盖任性类。(幸运的是,大多数方法都是公共虚拟的)
但这两个人只能让我走这么远

注意


领导的部分职责是审查提交的代码。他可能会将反腐败层解释为最好的过度,最坏的是侮辱。

您应该创建一个反腐败层,在这个层中,您基本上使用包装类在您和“专家”代码之间保留一个层。这将是处理这些废话的代价


还有一些模拟框架允许您处理不必更改现有代码的问题,但这些框架可能会比简单的包装类在政治上给您带来更多麻烦。

在这种情况下,反腐败层可能会起作用,但您必须小心,因为太多的框架会导致非常可怕的结果


有了这样一个层,你可以像威胁外部资源一样威胁系统的其余部分。

他永远不会同意签入单元测试。它们将只存在于我自己的机器上,所以我可以自由使用测试所需的任何框架。不幸的是,我的选择受到项目所用语言的限制。项目所用语言是什么?这肯定会有更多有用的答案?它是用object pascal编写的。我会把它作为一个评论,而不是一个抑制火焰的答案。我建议擦亮简历,开始关注新职位。你将在更友好的环境中取得更大的进步和学习。不是说辞职或做任何鲁莽的事,但如果气氛没有改善,6-12个月后我会有一份新工作。