組織のガイドラインをまとめるための単体テストのベストプラクティスを調査する際、テストフィクスチャ(テストクラス)を分離するか、1つのクラスのすべてのテストを1つのファイルに保持する方が良いか便利かという問題に直面しました。
ちなみに、純粋な意味での「ユニットテスト」とは、単一のクラス、テストごとに1つのアサーション、モックされたすべての依存関係などを対象とするホワイトボックステストのことです。
シナリオの例は、CheckInとCheckOutという2つのメソッドを持つクラス(Documentと呼ばれる)です。各メソッドは、動作を制御するさまざまなルールなどを実装します。テストごとに1つのアサーションルールに従って、メソッドごとに複数のテストがあります。およびのDocumentTests
ような名前を持つ単一のクラスにすべてのテストを配置できます。CheckInShouldThrowExceptionWhenUserIsUnauthorized
CheckOutShouldThrowExceptionWhenUserIsUnauthorized
または、2つの個別のテストクラスを持つことができます:CheckInShould
とCheckOutShould
。この場合、テスト名は短縮されますが、特定の動作(メソッド)のすべてのテストが一緒になるように整理されます。
私はどちらのアプローチにも賛否両論があると確信しており、誰かが複数のファイルでルートを行っているのかどうか疑問に思っています。または、単一ファイルのアプローチを選択した場合、なぜそれが良いと感じるのですか?
testResponseContainsSuccessTrue()
、testResponseContainsMyData()
とtestResponseStatusCodeIsOk()
。あなたは、単一でそれらを持っているでしょうtestResponse()
3がアサートしていますassertEquals(200, response.status)
、assertEquals({"data": "mydata"}, response.data)
とassertEquals(true, response.success)