私は最近、説明を最大化するために、テスト、クラス、およびプロジェクトを含むための次の規則を思いつきました。
名前空間のSettings
プロジェクトのクラスをテストしているとしましょうMyApp.Serialization
。
まず、MyApp.Serialization.Tests
名前空間を使用してテストプロジェクトを作成します。
このプロジェクト内、そしてもちろん名前空間内にIfSettings
(IfSettings.csとして保存された)というクラスを作成します。
SaveStrings()
メソッドをテストしているとしましょう。->テストに名前を付けますCanSaveStrings()
。
このテストを実行すると、次の見出しが表示されます。
MyApp.Serialization.Tests.IfSettings.CanSaveStrings
これは、それが何をテストしているかを非常によく教えてくれると思います。
もちろん、英語では名詞「Tests」が動詞「tests」と同じであることは有用です。
テストに名前を付ける際の創造性に制限はないので、テストの全文見出しを取得できます。
通常、テスト名は動詞で始まる必要があります。
例は次のとおりです。
- 検出(例
DetectsInvalidUserInput
)
- スロー(例
ThrowsOnNotFound
)
- 意志(例
WillCloseTheDatabaseAfterTheTransaction
)
等
別のオプションは、「if」の代わりに「that」を使用することです。
後者は私にキーストロークを保存し、テストされた動作が存在することを知らないので、私が何をしているかをより正確に説明しますが、存在するかどうかをテストしています。
[ 編集 ]
上記の命名規則をもう少し長く使用した後、インターフェースを操作するときに、Ifプレフィックスが混乱する可能性があることがわかりました。テストクラスIfSerializer.csが[ファイルを開く]タブのISerializer.csインターフェースに非常に似ていることが偶然に起こります。これは、テスト、テスト対象のクラス、およびそのインターフェースの間で切り替えを行うときに非常に煩わしくなります。その結果、私は今、選ぶだろうそれを超える場合は接頭辞として。
さらに、次のように、テストメソッド名の単語を区切るために、「_」を使用します。
[Test] public void detects_invalid_User_Input()
これは読みやすいと思います。
[ 編集を終了 ]
テストが何であるかを理解するために費やしていたはずの多くの時間を節約できるので、テストに名前を付けることを非常に重要視することを検討しているので、これによりいくつかのアイデアが生まれることを願っています(たとえば、長期間の活動停止後にプロジェクトを再開した後) 。