2016-09-25 1 views
1

私は単体テストのメリットを検証し、コードの正しさを検証し、適切に行うと自然に疎結合コードを作成するという追加の利点を確認しました。言い換えれば、ユニットは1つの方法ほど小さく、大きくはない。私はちょうどよい単体テストがコードを鳴らして他の開発者のコ​​ード変更からその機能を保護するかどうかを知りたいと思います(失敗した単体テストが失敗したビルドだと仮定して)。私が見落とした他の利点もありますか?ユニットテストはあなたのコードを他の開発者の間違いから守りますか?

+2

適切なカプセル化は、他の開発者の間違いを防ぐのに役立ちます。メソッド、モジュール、またはロジックの意図しない使用を、「使用させる」ものに限定することによって、他の開発者からのエラーを制限します。単体テストではそのようなことはありません。逆に、単体テストでは、機能的に必要以上にコードベースを開く必要があります。 単体テストの唯一のテストは、モジュールとメソッドが期待どおりの変更を行っていることです。 –

答えて

0

単体テストのテストカバレッジを持つ他の(見過ごされた)メリットの1つは、開発者が自分のつま先を大きなソリューション/古いレガシーコードに浸すことを実際に奨励できるということです。リファクタリングが失敗したときのフィードバック

0

はい、大部分の時間は、単体テストは実際に他の開発者の間違いを防ぎます。しかし、これは常に真実ではありません。テストポイントは、より実行可能なソリューションのためのより良い賭けです。

0

他の開発者がテストを削除しないかどうかによって異なります。

しかし、真剣に、コードを適切にモジュール化してテストを明確にすると、通常、人々はテストを中断した場合に変更を2回考えます。

変更が必要な理由がない限り、新しい機能を説明するために、テストを適宜変更する必要があります。

0

単体テストは、コードを他の開発者のミスから保護しますか?

正確ではありません。

単体テストは、特定のコード(「単位」)を分離し、それを肯定的および否定的な方法で呼び出して、毎回期待される結果に対して出力をテストします。これにより、ユニットが堅牢であり、そのユニットの文脈内で予想される要求 - を満たすことが保証されます。

これは、コードに値を渡す前に間違っている他の開発者や、返された値に間違って動作することを阻止しません。あなたのコードに渡された値は有効かもしれませんが、間違っています。例えば、あなたのコードは0から100の間の正の整数を期待するかもしれませんが、あなたのコードは50の値を渡す特定の呼び出し元が間違っているということを知らない - あなたのコードは受信したものにしか作用できません。 。この場合、その呼び出しコードの単体テストが問題を解決するかもしれませんが、コードの単体テストは実行されません。私はちょうど良いユニットテストはコード・フェンスリングや他の開発者のコ​​ードからその機能を保護するかどうかを知りたい

ユニットテストは、フェンスは何も鳴らない変更します。よく書かれたテストを前提として、あなたのコードが変更され、元の意図とはもはや一致しなくなった場合、あなたに教えてくれます。呼び出し元が実行時に間違った値を渡している場合は、呼び出し元が間違った値を渡しているかどうかはわかりませんが、間違った値が渡された場合、コードが正しく動作するかどうかを確認するのに役立ちます。

私の経験では、コードを書いている人としては良い。その人が貧弱なコーダーであるか、または要件を正しく理解していない場合は、テストは無駄になる可能性があります。私はこれまでに本当にひどい単体テストを見たことがあります。その結果、テストアプローチの一部に過ぎないことを常にアドバイスしています。それらを専ら信頼するべきではありません。単に規律あるアプローチの一部です。

関連する問題