私は同僚に単体テスト(およびテスト全般)の概念を紹介したいと思います。現在、テストはまったく行われておらず、実際にUIを介してタスクを実行して目的の結果を確認することにより、テストが行われています。ご想像のとおり、コードは正確な実装と非常に緊密に結合されています。クラス内にあり、システム全体で再利用されるコードがメソッド間でコピーおよび貼り付けされることさえあります。
要件が変更されたため、以前に書いたモジュールを修正するように依頼されましたが、それはかなり疎結合です(希望するほど多くはありませんが、他の多くの概念を導入することなく取得できます)。修正されたコードに単体テストのスイートを含めて、期待どおりに機能することを「証明」し、テストの仕組みを実証することにしました。コードの一部はすでに記述されているため、真のTDDをフォローしていませんが、作成する必要がある新しいコードについては、TDDの概念に従うことを望んでいます。
今、どうしてコードを書くのに1日か2日以上かかるのかと聞かれるのは避けられないだろう、なぜなら私がやり取りすることの一部はすでにシステムに存在しているからだ))でコードをチェックすると、この「テスト」プロジェクトとは何かを尋ねられます。テストの基本を説明することはできますが、他の人が理解する方法で実際の利点を説明することはできません(テストは自分でアプリを実行する必要があると考えているためです。 " か否か)。彼らは疎結合の概念を理解していません(疎結合されたものは何もないという事実から明らかです。私が書いたコード以外のインターフェースすらありません)。それを利益として使用しようとすると、おそらく「ハァッ」を得るでしょう。ある種の見た目であり、既存のいくつかのモジュールを作り直さずに、おそらく「プログラミング」ではなく時間の浪費と見なされるIoCコンテナを導入することなく、やりたいほどゆるくすることはできません。
誰も私がこのコードを指す方法についての提案を持っていますか?私のものが悪いことを除いて)またはそれは時間の無駄のように見えることなく、実際の価値を追加しませんか?