[解決済み】ユニットテストについて語るときの「DAMP not DRY」の意味とは?
質問
ある人が、ユニットテスト(nUnit、jUnit、xUnitなど)には
(例: ユニットテストには、quot;ドライコードではなく、quot;ダンプコードを含める必要があります)
何を言っているのだろう?
どのように解決するのか?
矛盾ではなく、バランスである
DAMPとDRYは矛盾するものではなく、むしろコードの2つの異なる側面のバランスをとるものです。 保守性 . ここでは、メンテナンス可能なコード(変更が容易なコード)が究極の目標です。
ダンプ (Descriptive And Meaningful Phrases)が推進する。 読みやすさ を使用します。
コードをメンテナンスするには、まずコードを理解する必要があります。理解するためには、コードを読まなければなりません。あなたが以下のようなことにどれだけの時間を費やしているか、ちょっと考えてみてください。 読む コードになります。かなりの量です。 DAMPは、コードを読んで理解するのに必要な時間を短縮することで、保守性を向上させます。
<強い DRY (繰り返しにならないように) を推進します。 直交性 のコードです。
重複を排除することで、システム内のすべてのコンセプトが、コード内で単一の権威ある表現を持つようになります。1つのビジネス・コンセプトを変更すると、コードも1つだけ変更されます。 DRYは、システムの変更しなければならない部分だけに変更(リスク)を隔離することで、保守性を向上させます。
では、なぜテストでは重複が許容されやすいのでしょうか?
テストは、入力値やセットアップコードが少し異なるだけで、同じものを何度もテストしているため、本質的に重複を含んでいることがよくあります。しかし、実稼働コードとは異なり、この重複は通常、単一のテストフィクスチャ/ファイル内のシナリオにのみ限定されます。このため、重複は最小限かつ明白であり、他のタイプの重複と比較して、プロジェクトに与えるリスクは低くなります。
さらに、このような重複を排除することで、テストの可読性が低下します。これまで各テストで重複していた詳細が、どこか新しいメソッドやクラスに隠されてしまうのです。テストの全体像を把握するためには、これらの断片をすべて精神的に組み立て直さなければならなくなります。
したがって、テストコードの重複は、リスクが少なく、可読性を高めることが多いので、許容範囲と考えるのは簡単です。
原則としては、本番コードではDRYを、テストコードではDAMPを支持します。どちらも同じように重要ですが、ちょっとした知恵で、バランスを有利にすることができます。
関連
-
[解決済み] Moqでクラスをモックするとき、特定のメソッドだけをCallBaseする方法は?
-
[解決済み] tornado + async defのunittestはどのように行うのですか?
-
[解決済み] フェイク、モッキング、スタビングの違いとは?
-
[解決済み] NUnit vs. MbUnit vs. MSTest vs. xUnit.net [終了しました。]
-
[解決済み】典型的なテストディレクトリ構造でunittestを実行する
-
[解決済み】ユニットテストと機能テストの違いは何ですか?
-
[解決済み] JUnitを使ったユニットテストのためのIntelliJ IDEAの設定
-
[解決済み] Visual Studio 2015または2017でユニットテストが検出されない
-
[解決済み] モッキングフレームワークにおけるモッキングとスパイの比較
-
[解決済み] GTestとCMakeを使った作業の始め方
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ユニットテストの命名のベストプラクティス [終了しました]。
-
[解決済み] Gradleを使用して1つのユニットテストクラスのみを実行する方法
-
[解決済み] ユニットテストとインテグレーションテストの違いは何ですか?[重複あり]
-
[解決済み】ユニットテストを実行せずにMavenプロジェクトをビルドする
-
[解決済み】mochaのテスト用ディレクトリを指定するには?
-
[解決済み] JUnitを使ったユニットテストのためのIntelliJ IDEAの設定
-
[解決済み] Goのモック関数
-
[解決済み] Unit Testsでランダムデータ?
-
[解決済み] ファイルシステムに依存するコードの単体テスト
-
[解決済み] ユニットテストとは、どのようなもので、どのように行うのですか?[重複あり]