我想向我的同事介绍单元测试(和一般测试)的概念;现在根本没有测试,通过UI实际执行任务以查看期望的结果来测试事物。就像您想象的那样,代码与确切的实现紧密耦合-甚至导致代码应该放在一个类中并在整个系统中重复使用,并且跨方法进行复制和粘贴。
由于需求的变化,我被要求修改我先前编写的模块,该模块相当松散地耦合在一起(虽然不尽如人意,但在无需引入许多其他概念的情况下,我可以做到最好)。我决定在修订后的代码中包含一套单元测试,以“证明”它可以按预期工作,并演示测试的工作方式。我没有遵循真正的TDD,因为已经编写了一些代码,但是我希望遵循一些TDD概念来创建新代码。
现在,我不可避免地会被问到,为什么要花我一两天以上的时间来编写代码,因为我要与之交互的部分已经存在于系统中(尽管没有任何测试并且非常紧密耦合),当我检查其中的代码时,系统将询问我这个“测试”项目是什么。我可以解释测试的基础知识,但是我无法以其他人会理解的方式解释实际好处(因为他们认为测试需要您自己运行应用程序,因为通常实际的UI在确定功能是否“有效”时很重要“ 或不)。他们不理解松散耦合的思想(显然没有松散耦合的事实;在我编写的代码之外甚至没有任何接口),因此尝试将其用作收益可能会给我带来“恩?” 外观,再也不必放松一些现有模块,并可能引入某种IoC容器,这就像浪费时间,而不是“编程”。
有人对我如何指向此代码有任何建议,并说“我们应该开始创建单元测试”而不会屈服于任何一个居高临下的条件(例如,“编写测试会迫使您编写良好的代码。”这可能意味着代码除非是我的坏人),还是没有浪费时间却没有增加任何实际价值?